Content-based Recommender

Another Example: scikit-learn: TF/IDF and cosine similarity for computer science papers

Computer Science Papers

Task: Finding similar computer science papers to read based on the similarity between titles using TF-IDF

What is TF-IDF (Term Frequency - Inverse Document Frequency)

We’ve got one file per paper which contains the title of the paper. We first need to iterate through that directory and build an array containing the papers:


In [91]:
import glob
 
corpus = []
for file in glob.glob("data/papers/*.txt"):
    with open(file, "r") as paper:
        corpus.append((file, paper.read()))

Check the titles of the first 10 papers.


In [92]:
corpus[0:10]


Out[92]:
[('data/papers/100000.txt', 'Inside risks: the clock grows at midnight'),
 ('data/papers/100226.txt', 'Coherent functions and program checkers'),
 ('data/papers/100228.txt', 'The wakeup problem'),
 ('data/papers/100231.txt', 'Efficient robust parallel computations'),
 ('data/papers/100262.txt',
  'An optimal algorithm for on-line bipartite matching'),
 ('data/papers/100269.txt',
  'One-way functions are necessary and sufficient for secure signatures'),
 ('data/papers/100270.txt',
  'Pseudo-random generators under uniform assumptions'),
 ('data/papers/100272.txt',
  'Witness indistinguishable and witness hiding protocols'),
 ('data/papers/100273.txt',
  'Public-key cryptosystems provably secure against chosen ciphertext attacks'),
 ('data/papers/100287.txt', 'The round complexity of secure protocols')]

Next we’ll build a TF/IDF matrix for each paper:


In [93]:
from sklearn.feature_extraction.text import TfidfVectorizer
 
tf = TfidfVectorizer(analyzer='word', ngram_range=(1,3), min_df = 0, stop_words = 'english')
tfidf_matrix =  tf.fit_transform([content for file, content in corpus[:]])

Next we’ll write a function that will find us the top n similar papers based on cosine similarity:


In [94]:
from sklearn.metrics.pairwise import linear_kernel
 
def find_similar(tfidf_matrix, index, top_n = 5):
    cosine_similarities = linear_kernel(tfidf_matrix[index:index+1], tfidf_matrix).flatten()
    related_docs_indices = [i for i in cosine_similarities.argsort()[::-1] if i != index]
    return [(index, cosine_similarities[index]) for index in related_docs_indices][0:top_n]

Let’s try it out:


In [95]:
corpus[1619]


Out[95]:
('data/papers/221215.txt',
 'TOTEM: a reliable ordered delivery protocol for interconnected local-area networks')

In [96]:
for index, score in find_similar(tfidf_matrix, 1619):
       print(score, corpus[index])


0.917540397202 ('data/papers/852338.txt', 'A reliable ordered delivery protocol for interconnected local area networks')
0.248736845733 ('data/papers/800897.txt', 'Interconnection of broadband local area networks')
0.207309089025 ('data/papers/103726.txt', 'High-speed local area networks and their performance: a survey')
0.204166719869 ('data/papers/161736.txt', 'High-speed switch scheduling for local-area networks')
0.198514433132 ('data/papers/627363.txt', 'Algorithms for Distributed Query Processing in Broadcast Local Area Networks')

It’s pretty good for finding duplicate papers!


In [97]:
corpus[1599]


Out[97]:
('data/papers/217470.txt',
 'A reliable multicast framework for light-weight sessions and application level framing')

In [98]:
for index, score in find_similar(tfidf_matrix, 1599):
       print (score, corpus[index])


1.0 ('data/papers/270863.txt', 'A reliable multicast framework for light-weight sessions and application level framing')
0.139643354066 ('data/papers/218325.txt', 'The KryptoKnight family of light-weight protocols for authentication and key distribution')
0.134763799612 ('data/papers/1251445.txt', 'ALMI: an application level multicast infrastructure')
0.117630311817 ('data/papers/125160.txt', 'Ordered and reliable multicast communication')
0.117630311817 ('data/papers/128741.txt', 'Ordered and reliable multicast communication')

But sometimes it identifies duplicates that aren’t identical:


In [99]:
corpus[5784]


Out[99]:
('data/papers/RFC2616.txt', 'Hypertext Transfer Protocol -- HTTP/1.1')

In [100]:
for index, score in find_similar(tfidf_matrix, 5784):
       print (score, corpus[index])


1.0 ('data/papers/RFC1945.txt', 'Hypertext Transfer Protocol -- HTTP/1.0')
1.0 ('data/papers/RFC2068.txt', 'Hypertext Transfer Protocol -- HTTP/1.1')
0.232865694216 ('data/papers/131844.txt', 'XTP: the Xpress Transfer Protocol')
0.138876842331 ('data/papers/RFC1866.txt', 'Hypertext Markup Language - 2.0')
0.104775586915 ('data/papers/760249.txt', 'On the transfer of control between contexts')

Finally, let us creat a CSV file containing to 5 similar papers for each paper.


In [108]:
import csv
with open("./output/similarities.csv", "w") as similarities_file:
    writer = csv.writer(similarities_file, delimiter = ",")

    for me_index, item in enumerate(corpus):
        similar_documents =  [(corpus[index], score) for index, score in find_similar(tfidf_matrix, me_index)]
        me = corpus[me_index]

        document_id = me[0].split("/")[2].split(".")[0]

        for ((raw_similar_document_id, title), score) in similar_documents:
            similar_document_id = raw_similar_document_id.split("/")[2].split(".")[0]
            writer.writerow([document_id, me[1], similar_document_id, title, score])

In [ ]:
Print 5 top similar papers for each paper as long as the similarity is greater than 0.5.

In [111]:
items = []

with open("./output/similarities.csv", "r") as similarities_file:
    reader = csv.reader(similarities_file, delimiter = ",")
    for row in reader:
        lst = list(row)
        lst[4] = float(lst[4])
        items.append(tuple(lst))

by_similarity = sorted(items, key = lambda x: x[4], reverse = True)

for similar_item in [item for item in by_similarity if 0.5 < item[4] < 0.99]:
    print (similar_item) 
    print ('\n')


('221215', 'TOTEM: a reliable ordered delivery protocol for interconnected local-area networks', '852338', 'A reliable ordered delivery protocol for interconnected local area networks', 0.917540397202)


('852338', 'A reliable ordered delivery protocol for interconnected local area networks', '221215', 'TOTEM: a reliable ordered delivery protocol for interconnected local-area networks', 0.917540397202)


('146935', 'The generalized tree quorum protocol: an efficient approach for managing replicated data', '671977', 'The Tree Quorum Protocol: An Efficient Approach for Managing Replicated Data', 0.914810942048)


('146935', 'The generalized tree quorum protocol: an efficient approach for managing replicated data', '94419', 'The tree quorum protocol: an efficient approach for managing replicated data', 0.914810942048)


('671977', 'The Tree Quorum Protocol: An Efficient Approach for Managing Replicated Data', '146935', 'The generalized tree quorum protocol: an efficient approach for managing replicated data', 0.914810942048)


('94419', 'The tree quorum protocol: an efficient approach for managing replicated data', '146935', 'The generalized tree quorum protocol: an efficient approach for managing replicated data', 0.914810942048)


('2210', 'Security for computer networks:  an introduction to data security in teleprocessing and electronic funds transfer', '74790', 'Security for computer networks: and introduction to data security in teleprocessing and electronic funds transfer (2nd ed.)', 0.906760756541)


('74790', 'Security for computer networks: and introduction to data security in teleprocessing and electronic funds transfer (2nd ed.)', '2210', 'Security for computer networks:  an introduction to data security in teleprocessing and electronic funds transfer', 0.906760756541)


('274443', 'Concurrency control: methods, performance, and analysis', '525573', 'Database Concurrency Control: Methods, Performance, and Analysis', 0.901000522385)


('525573', 'Database Concurrency Control: Methods, Performance, and Analysis', '274443', 'Concurrency control: methods, performance, and analysis', 0.901000522385)


('206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', '270952', 'A Comment on "A Total Ordering Multicast Protocol Using Propagation Trees"', 0.893897080002)


('270952', 'A Comment on "A Total Ordering Multicast Protocol Using Propagation Trees"', '206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', 0.893897080002)


('RFC1057', 'RPC: Remote Procedure Call Protocol specification', 'RFC1831', 'RPC: Remote Procedure Call Protocol Specification Version 2', 0.892676776768)


('RFC1831', 'RPC: Remote Procedure Call Protocol Specification Version 2', 'RFC1057', 'RPC: Remote Procedure Call Protocol specification', 0.892676776768)


('593438', 'Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Totals', '655593', 'Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Total', 0.889932379826)


('655593', 'Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Total', '593438', 'Data Cube: A Relational Aggregation Operator Generalizing Group-By, Cross-Tab, and Sub-Totals', 0.889932379826)


('323610', 'Simple constant-time consensus protocols in realistic failure models (extended abstract)', '65956', 'Simple constant-time consensus protocols in realistic failure models', 0.888031855671)


('65956', 'Simple constant-time consensus protocols in realistic failure models', '323610', 'Simple constant-time consensus protocols in realistic failure models (extended abstract)', 0.888031855671)


('3319', 'Implementation of resilient, atomic data types', '806851', 'Specification and implementation of resilient, atomic data types', 0.87758184826)


('806851', 'Specification and implementation of resilient, atomic data types', '3319', 'Implementation of resilient, atomic data types', 0.87758184826)


('75583', 'Dynamic file migration in distributed computer systems', '910946', 'File migration in distributed computer systems', 0.870608411265)


('910946', 'File migration in distributed computer systems', '75583', 'Dynamic file migration in distributed computer systems', 0.870608411265)


('347560', 'Practical network support for IP traceback', '383578', 'Network support for IP traceback', 0.853839405191)


('383578', 'Network support for IP traceback', '347560', 'Practical network support for IP traceback', 0.853839405191)


('384222', 'Using Cohort Scheduling to Enhance Server Performance (Extended Abstract)', '713864', 'Using Cohort-Scheduling to Enhance Server Performance', 0.85333188992)


('713864', 'Using Cohort-Scheduling to Enhance Server Performance', '384222', 'Using Cohort Scheduling to Enhance Server Performance (Extended Abstract)', 0.85333188992)


('55604', 'The limited performance benefits of migrating active processes for load sharing', '893796', 'A note on "The limited performance benefits of migrating active processes for load', 0.852582147746)


('893796', 'A note on "The limited performance benefits of migrating active processes for load', '55604', 'The limited performance benefits of migrating active processes for load sharing', 0.852582147746)


('358824', 'Experience with processes and monitors in Mesa', '806568', 'Experience with processes and monitors in Mesa (Summary)', 0.84800689577)


('806568', 'Experience with processes and monitors in Mesa (Summary)', '358824', 'Experience with processes and monitors in Mesa', 0.84800689577)


('823227', 'WebOS: Operating System Services for Wide Area Applications', '928428', 'Operating system services for wide-area applications', 0.84675559185)


('928428', 'Operating system services for wide-area applications', '823227', 'WebOS: Operating System Services for Wide Area Applications', 0.84675559185)


('191872', 'Optimization of dynamic query evaluation plans', '66960', 'Dynamic query evaluation plans', 0.846187354814)


('66960', 'Dynamic query evaluation plans', '191872', 'Optimization of dynamic query evaluation plans', 0.846187354814)


('190326', 'An architecture for wide-area multicast routing', '225995', 'The PIM architecture for wide-area multicast routing', 0.843706579771)


('225995', 'The PIM architecture for wide-area multicast routing', '190326', 'An architecture for wide-area multicast routing', 0.843706579771)


('823140', 'Packing Messages as a Tool for Boosting the Performance of Total Ordering Protocls', '866791', 'Packing Messages as a Tool for Boosting the Performance of Total Ordering Protocols', 0.841506946386)


('866791', 'Packing Messages as a Tool for Boosting the Performance of Total Ordering Protocols', '823140', 'Packing Messages as a Tool for Boosting the Performance of Total Ordering Protocls', 0.841506946386)


('502053', 'Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility', '876400', 'PAST: A Large-Scale, Persistent Peer-to-Peer Storage Utility', 0.837891224593)


('876400', 'PAST: A Large-Scale, Persistent Peer-to-Peer Storage Utility', '502053', 'Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility', 0.837891224593)


('341817', 'DCAS-based concurrent deques', '758425', 'Even Better DCAS-Based Concurrent Deques', 0.837019769295)


('758425', 'Even Better DCAS-Based Concurrent Deques', '341817', 'DCAS-based concurrent deques', 0.837019769295)


('15418', 'Availability in partitioned replicated databases', '866260', 'Maintaining Availability in Partitioned Replicated Databases', 0.828284580359)


('15418', 'Availability in partitioned replicated databases', '63501', 'Maintaining availability in partitioned replicated databases', 0.828284580359)


('63501', 'Maintaining availability in partitioned replicated databases', '866116', 'Availability in partitioned replicated databases', 0.828284580359)


('63501', 'Maintaining availability in partitioned replicated databases', '15418', 'Availability in partitioned replicated databases', 0.828284580359)


('866116', 'Availability in partitioned replicated databases', '866260', 'Maintaining Availability in Partitioned Replicated Databases', 0.828284580359)


('866116', 'Availability in partitioned replicated databases', '63501', 'Maintaining availability in partitioned replicated databases', 0.828284580359)


('866260', 'Maintaining Availability in Partitioned Replicated Databases', '866116', 'Availability in partitioned replicated databases', 0.828284580359)


('866260', 'Maintaining Availability in Partitioned Replicated Databases', '15418', 'Availability in partitioned replicated databases', 0.828284580359)


('62588', 'Automatically increasing the fault-tolerance of distributed systems', '83337', 'Automatically increasing the fault-tolerance of distributed algorithms', 0.827657268472)


('83337', 'Automatically increasing the fault-tolerance of distributed algorithms', '62588', 'Automatically increasing the fault-tolerance of distributed systems', 0.827657268472)


('320260', 'System level concurrency control for distributed database systems', '61076', 'Concurrency control in distributed database systems', 0.82608883796)


('320260', 'System level concurrency control for distributed database systems', '356846', 'Concurrency Control in Distributed Database Systems', 0.82608883796)


('356846', 'Concurrency Control in Distributed Database Systems', '320260', 'System level concurrency control for distributed database systems', 0.82608883796)


('61076', 'Concurrency control in distributed database systems', '320260', 'System level concurrency control for distributed database systems', 0.82608883796)


('357355', 'Implementing atomic actions on decentralized data', '806584', 'Implementing atomic actions on decentralized data (Extended Abstract)', 0.819970951765)


('806584', 'Implementing atomic actions on decentralized data (Extended Abstract)', '357355', 'Implementing atomic actions on decentralized data', 0.819970951765)


('3831', 'A mean value performance model for locking in databases: the no-waiting case', '911561', 'A mean value performance model for locking in databases', 0.817072143979)


('911561', 'A mean value performance model for locking in databases', '3831', 'A mean value performance model for locking in databases: the no-waiting case', 0.817072143979)


('699395', 'Exploiting Atomic Broadcast in Replicated Databases (Extended Abstract)', '699991', 'Exploiting Atomic Broadcast in Replicated Databases', 0.816153445451)


('699991', 'Exploiting Atomic Broadcast in Replicated Databases', '699395', 'Exploiting Atomic Broadcast in Replicated Databases (Extended Abstract)', 0.816153445451)


('214406', 'A distributed mutual exclusion algorithm', '675172', 'A Robust Distributed Mutual Exclusion Algorithm', 0.813768439168)


('675172', 'A Robust Distributed Mutual Exclusion Algorithm', '214406', 'A distributed mutual exclusion algorithm', 0.813768439168)


('166255', 'On the self-similar nature of Ethernet traffic', '178222', 'On the self-similar nature of Ethernet traffic (extended version)', 0.808891933127)


('178222', 'On the self-similar nature of Ethernet traffic (extended version)', '166255', 'On the self-similar nature of Ethernet traffic', 0.808891933127)


('135451', 'The weakest failure detector for solving consensus', '831089', 'Optimal Implementation of the Weakest Failure Detector for Solving Consensus', 0.80695835826)


('234549', 'The weakest failure detector for solving consensus', '831089', 'Optimal Implementation of the Weakest Failure Detector for Solving Consensus', 0.80695835826)


('831089', 'Optimal Implementation of the Weakest Failure Detector for Solving Consensus', '135451', 'The weakest failure detector for solving consensus', 0.80695835826)


('831089', 'Optimal Implementation of the Weakest Failure Detector for Solving Consensus', '234549', 'The weakest failure detector for solving consensus', 0.80695835826)


('22180', 'An O(lg n) expected rounds randomized Byzantine generals protocol', '42229', 'An O(log n) expected rounds randomized byzantine generals protocol', 0.803017670827)


('42229', 'An O(log n) expected rounds randomized byzantine generals protocol', '22180', 'An O(lg n) expected rounds randomized Byzantine generals protocol', 0.803017670827)


('209169', 'DB2 parallel edition', '223876', 'An overview of DB2 parallel edition', 0.802511440926)


('223876', 'An overview of DB2 parallel edition', '209169', 'DB2 parallel edition', 0.802511440926)


('RFC1813', 'NFS Version 3 Protocol Specification', 'RFC3010', 'NFS version 4 Protocol', 0.801686837764)


('RFC3010', 'NFS version 4 Protocol', 'RFC1813', 'NFS Version 3 Protocol Specification', 0.801686837764)


('319717', 'Distributed deadlock detection algorithm', '357365', 'Distributed deadlock detection', 0.798073875004)


('357365', 'Distributed deadlock detection', '319717', 'Distributed deadlock detection algorithm', 0.798073875004)


('237140', 'The case for a single-chip multiprocessor', '620806', 'A Single-Chip Multiprocessor', 0.796091549448)


('620806', 'A Single-Chip Multiprocessor', '237140', 'The case for a single-chip multiprocessor', 0.796091549448)


('52355', 'A binary feedback scheme for congestion avoidance in computer networks with a connectionless network layer', '59321', 'Congestion avoidance in computer networks with a connectionless network layer', 0.795879407815)


('59321', 'Congestion avoidance in computer networks with a connectionless network layer', '52355', 'A binary feedback scheme for congestion avoidance in computer networks with a connectionless network layer', 0.795879407815)


('52355', 'A binary feedback scheme for congestion avoidance in computer networks with a connectionless network layer', '78955', 'A binary feedback scheme for congestion avoidance in computer networks', 0.794375851701)


('78955', 'A binary feedback scheme for congestion avoidance in computer networks', '52355', 'A binary feedback scheme for congestion avoidance in computer networks with a connectionless network layer', 0.794375851701)


('302435', 'Fault-tolerant broadcasts and related problems', '866693', 'A Modular Approach to Fault-Tolerant Broadcasts and Related Problems', 0.794260035015)


('866693', 'A Modular Approach to Fault-Tolerant Broadcasts and Related Problems', '302435', 'Fault-tolerant broadcasts and related problems', 0.794260035015)


('113407', 'Sequential consistency versus linearizability (extended abstract)', '176576', 'Sequential consistency versus linearizability', 0.793864678322)


('176576', 'Sequential consistency versus linearizability', '113407', 'Sequential consistency versus linearizability (extended abstract)', 0.793864678322)


('542899', 'Introduction to Mathematical Theory of Computation', '940279', 'Mathematical Theory of Computation', 0.793269349424)


('940279', 'Mathematical Theory of Computation', '542899', 'Introduction to Mathematical Theory of Computation', 0.793269349424)


('1313753', 'Detection of Mutual Inconsistency in Distributed Systems', '653383', 'Detection of Mutual Inconsistency in Distributed Databases', 0.792468133376)


('653383', 'Detection of Mutual Inconsistency in Distributed Databases', '1313753', 'Detection of Mutual Inconsistency in Distributed Systems', 0.792468133376)


('161469', 'A methodology for implementing highly concurrent data objects', '99185', 'A methodology for implementing highly concurrent data structures', 0.792186829402)


('99185', 'A methodology for implementing highly concurrent data structures', '161469', 'A methodology for implementing highly concurrent data objects', 0.792186829402)


('324128', 'Building a high-performance, programmable secure coprocessor', '728325', 'Using a High-Performance, Programmable Secure Coprocessor', 0.790696788918)


('728325', 'Using a High-Performance, Programmable Secure Coprocessor', '324128', 'Building a high-performance, programmable secure coprocessor', 0.790696788918)


('55516', 'Distributed shared memory in a loosely coupled distributed system', '916634', 'Distributed shared memory in a loosely-coupled environment', 0.787504924715)


('916634', 'Distributed shared memory in a loosely-coupled environment', '55516', 'Distributed shared memory in a loosely coupled distributed system', 0.787504924715)


('1313439', 'Proving the Correctness of Multiprocess Programs', '357068', 'A New Approach to Proving the Correctness of Multiprocess Programs', 0.783336181585)


('357068', 'A New Approach to Proving the Correctness of Multiprocess Programs', '1313439', 'Proving the Correctness of Multiprocess Programs', 0.783336181585)


('165662', 'Overview of the Vesta parallel file system', '233558', 'The Vesta parallel file system', 0.782857386059)


('233558', 'The Vesta parallel file system', '165662', 'Overview of the Vesta parallel file system', 0.782857386059)


('359585', 'Communicating sequential processes', '833', 'A Theory of Communicating Sequential Processes', 0.782174842929)


('3921', 'Communicating sequential processes', '833', 'A Theory of Communicating Sequential Processes', 0.782174842929)


('833', 'A Theory of Communicating Sequential Processes', '3921', 'Communicating sequential processes', 0.782174842929)


('833', 'A Theory of Communicating Sequential Processes', '359585', 'Communicating sequential processes', 0.782174842929)


('174657', 'The elusive atomic register', '41858', 'The elusive atomic register revisited', 0.780276585396)


('41858', 'The elusive atomic register revisited', '900438', 'The Elusive Atomic Register', 0.780276585396)


('41858', 'The elusive atomic register revisited', '174657', 'The elusive atomic register', 0.780276585396)


('900438', 'The Elusive Atomic Register', '41858', 'The elusive atomic register revisited', 0.780276585396)


('357110', 'A Proof System for Communicating Sequential Processes', '3921', 'Communicating sequential processes', 0.771859405517)


('357110', 'A Proof System for Communicating Sequential Processes', '359585', 'Communicating sequential processes', 0.771859405517)


('359585', 'Communicating sequential processes', '357110', 'A Proof System for Communicating Sequential Processes', 0.771859405517)


('3921', 'Communicating sequential processes', '357110', 'A Proof System for Communicating Sequential Processes', 0.771859405517)


('192033', 'EVENODD: an optimal scheme for tolerating double disk failures in RAID architectures', '203282', 'EVENODD: An Efficient Scheme for Tolerating Double Disk Failures in RAID Architectures', 0.769940351821)


('203282', 'EVENODD: An Efficient Scheme for Tolerating Double Disk Failures in RAID Architectures', '192033', 'EVENODD: an optimal scheme for tolerating double disk failures in RAID architectures', 0.769940351821)


('322398', 'The Weak Byzantine Generals Problem', '357176', 'The Byzantine Generals Problem', 0.768902617023)


('357176', 'The Byzantine Generals Problem', '322398', 'The Weak Byzantine Generals Problem', 0.768902617023)


('106729', 'Fault-tolerant distributed computing', '866137', 'ISIS: A System for Fault-Tolerant Distributed Computing', 0.763563050862)


('866137', 'ISIS: A System for Fault-Tolerant Distributed Computing', '106729', 'Fault-tolerant distributed computing', 0.763563050862)


('103729', 'Algorithms for scalable synchronization on shared-memory multiprocessors', '898438', 'Algorithms for Scalable Synchronization on Shared-Memory Multiproceessors', 0.761409234948)


('898438', 'Algorithms for Scalable Synchronization on Shared-Memory Multiproceessors', '103729', 'Algorithms for scalable synchronization on shared-memory multiprocessors', 0.761409234948)


('167487', 'Weak-consistency group communication and membership', '902626', 'WEAK-CONSISTENCY GROUP COMMUNICATION AND MEMBERSHIP (Ph.D. dissertation)', 0.761300382725)


('902626', 'WEAK-CONSISTENCY GROUP COMMUNICATION AND MEMBERSHIP (Ph.D. dissertation)', '167487', 'Weak-consistency group communication and membership', 0.761300382725)


('1895798', 'RMTP: a reliable multicast transport protocol', '2312599', 'Reliable multicast transport protocol (RMTP)', 0.759214150307)


('2312599', 'Reliable multicast transport protocol (RMTP)', '1895798', 'RMTP: a reliable multicast transport protocol', 0.759214150307)


('302436', 'Non-blocking atomic commitment', '830567', 'The Decentralized Non-Blocking Atomic Commitment Protocol', 0.746092217361)


('830567', 'The Decentralized Non-Blocking Atomic Commitment Protocol', '302436', 'Non-blocking atomic commitment', 0.746092217361)


('166609', 'Input-output performance evaluation: self-scaling benchmarks, predicted performance', '195812', 'A new approach to I/O performance evaluation: self-scaling I/O benchmarks, predicted I/O performance', 0.742809113242)


('195812', 'A new approach to I/O performance evaluation: self-scaling I/O benchmarks, predicted I/O performance', '166609', 'Input-output performance evaluation: self-scaling benchmarks, predicted performance', 0.742809113242)


('357371', 'Fail-stop processors: an approach to designing fault-tolerant computing systems', '867563', 'An Approach to Designing Fault-Tolerant Computing Systems', 0.740713866996)


('867563', 'An Approach to Designing Fault-Tolerant Computing Systems', '357371', 'Fail-stop processors: an approach to designing fault-tolerant computing systems', 0.740713866996)


('10608', 'Optimistic concurrency control for abstract data types', '308440', 'Hybrid concurrency control for abstract data types', 0.735407981636)


('308440', 'Hybrid concurrency control for abstract data types', '10608', 'Optimistic concurrency control for abstract data types', 0.735407981636)


('302436', 'Non-blocking atomic commitment', '847188', 'Reducing the cost for non-blocking in atomic commitment', 0.734543958163)


('847188', 'Reducing the cost for non-blocking in atomic commitment', '302436', 'Non-blocking atomic commitment', 0.734543958163)


('1035782', 'Byzantine quorum systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.734362128447)


('258650', 'Byzantine quorum systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.734362128447)


('737912', 'Dynamic Byzantine Quorum Systems', '258650', 'Byzantine quorum systems', 0.734362128447)


('737912', 'Dynamic Byzantine Quorum Systems', '1035782', 'Byzantine quorum systems', 0.734362128447)


('161724', 'TCP/IP illustrated (vol. 1): the protocols', '206746', 'TCP/IP illustrated (vol. 2): the implementation', 0.733137247372)


('206746', 'TCP/IP illustrated (vol. 2): the implementation', '161724', 'TCP/IP illustrated (vol. 1): the protocols', 0.733137247372)


('184674', 'Distributed operating systems', '549055', 'Distributed Operating Systems and Algorithms', 0.730997540363)


('549055', 'Distributed Operating Systems and Algorithms', '184674', 'Distributed operating systems', 0.730997540363)


('549055', 'Distributed Operating Systems and Algorithms', '6074', 'Distributed operating systems', 0.730997540363)


('6074', 'Distributed operating systems', '549055', 'Distributed Operating Systems and Algorithms', 0.730997540363)


('13891', 'Low cost management of replicated data', '6309', 'Low cost management of replicated data in fault-tolerant distributed systems', 0.727387690672)


('6309', 'Low cost management of replicated data in fault-tolerant distributed systems', '13891', 'Low cost management of replicated data', 0.727387690672)


('1267285', 'Measuring the capacity of a web server', '598725', 'Measuring the capacity of a Web server under realistic loads', 0.727128005166)


('598725', 'Measuring the capacity of a Web server under realistic loads', '1267285', 'Measuring the capacity of a web server', 0.727128005166)


('734089', 'Counterexample-Guided Abstraction Refinement', '876643', 'Counterexample-guided abstraction refinement for symbolic model checking', 0.727125706879)


('876643', 'Counterexample-guided abstraction refinement for symbolic model checking', '734089', 'Counterexample-Guided Abstraction Refinement', 0.727125706879)


('1035758', 'Synchronous Byzantine quorum systems', '1035782', 'Byzantine quorum systems', 0.72595784043)


('1035758', 'Synchronous Byzantine quorum systems', '258650', 'Byzantine quorum systems', 0.72595784043)


('1035782', 'Byzantine quorum systems', '259454', 'Synchronous Byzantine quorum systems', 0.72595784043)


('1035782', 'Byzantine quorum systems', '1035758', 'Synchronous Byzantine quorum systems', 0.72595784043)


('258650', 'Byzantine quorum systems', '259454', 'Synchronous Byzantine quorum systems', 0.72595784043)


('258650', 'Byzantine quorum systems', '1035758', 'Synchronous Byzantine quorum systems', 0.72595784043)


('259454', 'Synchronous Byzantine quorum systems', '1035782', 'Byzantine quorum systems', 0.72595784043)


('259454', 'Synchronous Byzantine quorum systems', '258650', 'Byzantine quorum systems', 0.72595784043)


('116006', 'Observations on the dynamics of a congestion control algorithm: the effects of two-way traffic', '381931', 'Some observations on the dynamics of a congestion control algorithm', 0.72524807228)


('381931', 'Some observations on the dynamics of a congestion control algorithm', '116006', 'Observations on the dynamics of a congestion control algorithm: the effects of two-way traffic', 0.72524807228)


('357156', 'Termination Detection of Diffusing Computations in Communicating Sequential Processes', '900135', 'Termination Detection of Diffusing Computations in Communicating SequentialProcesses', 0.72281432876)


('900135', 'Termination Detection of Diffusing Computations in Communicating SequentialProcesses', '357156', 'Termination Detection of Diffusing Computations in Communicating Sequential Processes', 0.72281432876)


('41864', 'Substituting for real time and common knowledge in asynchronous distributed systems', '866194', 'Substituting for Real Time and Common Knowledge in Distributed Systems', 0.714831903895)


('866194', 'Substituting for Real Time and Common Knowledge in Distributed Systems', '41864', 'Substituting for real time and common knowledge in asynchronous distributed systems', 0.714831903895)


('131177', 'Complexity of Fault Diagnosis in Comparison Models', '141482', 'Optimal Fault Diagnosis in Comparison Models', 0.713999041738)


('141482', 'Optimal Fault Diagnosis in Comparison Models', '131177', 'Complexity of Fault Diagnosis in Comparison Models', 0.713999041738)


('1035782', 'Byzantine quorum systems', '277781', 'Probabilistic Byzantine quorum systems', 0.711722749391)


('258650', 'Byzantine quorum systems', '277781', 'Probabilistic Byzantine quorum systems', 0.711722749391)


('277781', 'Probabilistic Byzantine quorum systems', '258650', 'Byzantine quorum systems', 0.711722749391)


('277781', 'Probabilistic Byzantine quorum systems', '1035782', 'Byzantine quorum systems', 0.711722749391)


('803345', 'Encryption-based protection for interactive user/computer communication', '889762', 'ENCRYPTION-BASED PROTECTION PROTOCOLS FOR INTERACTIVE USER-COMPUTER COMMUNICATION', 0.707772062223)


('889762', 'ENCRYPTION-BASED PROTECTION PROTOCOLS FOR INTERACTIVE USER-COMPUTER COMMUNICATION', '803345', 'Encryption-based protection for interactive user/computer communication', 0.707772062223)


('296824', 'Practical Byzantine fault tolerance', '571640', 'Practical byzantine fault tolerance and proactive recovery', 0.706753589904)


('571640', 'Practical byzantine fault tolerance and proactive recovery', '296824', 'Practical Byzantine fault tolerance', 0.706753589904)


('738422', 'Small Byzantine Quorum Systems', '258650', 'Byzantine quorum systems', 0.706321381141)


('738422', 'Small Byzantine Quorum Systems', '1035782', 'Byzantine quorum systems', 0.706321381141)


('807045', 'Programming with abstract data types', '908660', 'The specification and application to programming of abstract data types.', 0.705830419532)


('908660', 'The specification and application to programming of abstract data types.', '807045', 'Programming with abstract data types', 0.705830419532)


('220273', 'Forward and backward simulations I.: untimed systems', '232273', 'Forward and Backward Simulations', 0.703998873715)


('232273', 'Forward and Backward Simulations', '220273', 'Forward and backward simulations I.: untimed systems', 0.703998873715)


('1972515', 'Principles of Distributed Database Systems', '293457', 'Principles of distributed database systems (2nd ed.)', 0.703540902386)


('293457', 'Principles of distributed database systems (2nd ed.)', '95272', 'Principles of distributed database systems', 0.703540902386)


('293457', 'Principles of distributed database systems (2nd ed.)', '1972515', 'Principles of Distributed Database Systems', 0.703540902386)


('95272', 'Principles of distributed database systems', '293457', 'Principles of distributed database systems (2nd ed.)', 0.703540902386)


('1268703', 'A toolkit approach to partially connected operation', '692377', 'Partially Connected Operation', 0.702443196323)


('692377', 'Partially Connected Operation', '1268703', 'A toolkit approach to partially connected operation', 0.702443196323)


('RFC3010', 'NFS version 4 Protocol', 'RFC3530', 'Network File System (NFS) version 4 Protocol', 0.696102671838)


('RFC3530', 'Network File System (NFS) version 4 Protocol', 'RFC3010', 'NFS version 4 Protocol', 0.696102671838)


('16888', 'The design of POSTGRES', '671639', 'The Design of the POSTGRES Storage System', 0.68694892298)


('16888', 'The design of POSTGRES', '190989', 'The design of the POSTGRES storage system', 0.68694892298)


('190989', 'The design of the POSTGRES storage system', '16888', 'The design of POSTGRES', 0.68694892298)


('671639', 'The Design of the POSTGRES Storage System', '16888', 'The design of POSTGRES', 0.68694892298)


('260999', 'The art of computer programming, volume 1 (3rd ed.): fundamental algorithms', '270146', 'The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms', 0.684221008937)


('270146', 'The art of computer programming, volume 2 (3rd ed.): seminumerical algorithms', '260999', 'The art of computer programming, volume 1 (3rd ed.): fundamental algorithms', 0.684221008937)


('359029', 'Decentralized extrema-finding in circular configurations of processors', '359108', 'An improved algorithm for decentralized extrema-finding in circular configurations of processes', 0.684100583545)


('359108', 'An improved algorithm for decentralized extrema-finding in circular configurations of processes', '359029', 'Decentralized extrema-finding in circular configurations of processors', 0.684100583545)


('170082', 'Doubly distorted mirrors', '383652', 'Distorted mirrors', 0.683443556339)


('383652', 'Distorted mirrors', '170082', 'Doubly distorted mirrors', 0.683443556339)


('158938', "Speeding Lamport's fast mutual exclusion algorithm", '7352', 'A fast mutual exclusion algorithm', 0.6815055973)


('7352', 'A fast mutual exclusion algorithm', '158938', "Speeding Lamport's fast mutual exclusion algorithm", 0.6815055973)


('188194', 'Another method for attaining security against adaptively chosen ciphertext attacks', '705542', 'Practical Approaches to Attaining Security Against Adaptively Chosen Ciphertext Attacks (Extended Abstract)', 0.681216541698)


('705542', 'Practical Approaches to Attaining Security Against Adaptively Chosen Ciphertext Attacks (Extended Abstract)', '188194', 'Another method for attaining security against adaptively chosen ciphertext attacks', 0.681216541698)


('135431', 'Computing with faulty shared memory', '227688', 'Computing with faulty shared objects', 0.680297526439)


('227688', 'Computing with faulty shared objects', '135431', 'Computing with faulty shared memory', 0.680297526439)


('RFC2459', 'Internet X.509 Public Key Infrastructure Certificate and CRL Profile', 'RFC2510', 'Internet X.509 Public Key Infrastructure Certificate Management Protocols', 0.678020901545)


('RFC2510', 'Internet X.509 Public Key Infrastructure Certificate Management Protocols', 'RFC2459', 'Internet X.509 Public Key Infrastructure Certificate and CRL Profile', 0.678020901545)


('2480856', 'Materialized Views', '671335', 'Materialized Views in Oracle', 0.676244142828)


('671335', 'Materialized Views in Oracle', '2480856', 'Materialized Views', 0.676244142828)


('374509', 'Genuine atomic multicast in asynchronous distributed systems', '675783', 'Genuine Atomic Multicast', 0.675846105475)


('675783', 'Genuine Atomic Multicast', '374509', 'Genuine atomic multicast in asynchronous distributed systems', 0.675846105475)


('173985', 'Queue response to input correlation functions: discrete spectral analysis', '174382', 'Queue response to input correlation functions: continuous spectral analysis', 0.675723088649)


('174382', 'Queue response to input correlation functions: continuous spectral analysis', '173985', 'Queue response to input correlation functions: discrete spectral analysis', 0.675723088649)


('357176', 'The Byzantine Generals Problem', '4622', 'A new solution for the byzantine generals problem', 0.674118086275)


('4622', 'A new solution for the byzantine generals problem', '357176', 'The Byzantine Generals Problem', 0.674118086275)


('268954', 'From system F to typed assembly language', '719245', 'Stack-Based Typed Assembly Language', 0.670672360127)


('319345', 'From system F to typed assembly language', '719245', 'Stack-Based Typed Assembly Language', 0.670672360127)


('719245', 'Stack-Based Typed Assembly Language', '319345', 'From system F to typed assembly language', 0.670672360127)


('719245', 'Stack-Based Typed Assembly Language', '268954', 'From system F to typed assembly language', 0.670672360127)


('1435432', 'Eventually consistent', '2259252', 'Eventually consistent transactions', 0.667473849732)


('1466448', 'Eventually Consistent', '2259252', 'Eventually consistent transactions', 0.667473849732)


('2259252', 'Eventually consistent transactions', '1435432', 'Eventually consistent', 0.667473849732)


('2259252', 'Eventually consistent transactions', '1466448', 'Eventually Consistent', 0.667473849732)


('112825', 'The art of metaobject protocol', '217868', 'A metaobject protocol for C++', 0.666896083953)


('217868', 'A metaobject protocol for C++', '574212', 'The  Art of the Metaobject Protocol', 0.666896083953)


('217868', 'A metaobject protocol for C++', '112825', 'The art of metaobject protocol', 0.666896083953)


('574212', 'The  Art of the Metaobject Protocol', '217868', 'A metaobject protocol for C++', 0.666896083953)


('1698157', 'DCAS-based concurrent deques supporting bulk allocation', '341817', 'DCAS-based concurrent deques', 0.666054009031)


('341817', 'DCAS-based concurrent deques', '1698157', 'DCAS-based concurrent deques supporting bulk allocation', 0.666054009031)


('118237', 'Threshold cryptosystems', '713787', 'Generalized Threshold Cryptosystems', 0.665608569359)


('705196', 'Threshold Cryptosystems', '713787', 'Generalized Threshold Cryptosystems', 0.665608569359)


('713787', 'Generalized Threshold Cryptosystems', '118237', 'Threshold cryptosystems', 0.665608569359)


('713787', 'Generalized Threshold Cryptosystems', '705196', 'Threshold Cryptosystems', 0.665608569359)


('357356', 'Cache Performance in the VAX-11/780', '808199', 'A Characterization of Processor Performance in the vax-11/780', 0.664701032944)


('808199', 'A Characterization of Processor Performance in the vax-11/780', '357356', 'Cache Performance in the VAX-11/780', 0.664701032944)


('322030', 'The Complexity of Parallel Evaluation of Linear Recurrences', '803748', 'The complexity of parallel evaluation of linear recurrence', 0.663539390088)


('803748', 'The complexity of parallel evaluation of linear recurrence', '322030', 'The Complexity of Parallel Evaluation of Linear Recurrences', 0.663539390088)


('31847', 'A weighted voting algorithm for replicated directories', '806713', 'An algorithm, for replicated directories', 0.662885768623)


('806713', 'An algorithm, for replicated directories', '31847', 'A weighted voting algorithm for replicated directories', 0.662885768623)


('361306', 'The Multics virtual memory: concepts and design', '961069', 'The multics virtual memory', 0.661978395593)


('961069', 'The multics virtual memory', '361306', 'The Multics virtual memory: concepts and design', 0.661978395593)


('543507', 'Reputation in privacy enhancing technologies', '793693', 'Privacy-enhancing technologies for the Internet', 0.660620255417)


('793693', 'Privacy-enhancing technologies for the Internet', '543507', 'Reputation in privacy enhancing technologies', 0.660620255417)


('1895798', 'RMTP: a reliable multicast transport protocol', '52349', 'A multicast transport protocol', 0.659655162206)


('2312599', 'Reliable multicast transport protocol (RMTP)', '52349', 'A multicast transport protocol', 0.659655162206)


('52349', 'A multicast transport protocol', '2312599', 'Reliable multicast transport protocol (RMTP)', 0.659655162206)


('52349', 'A multicast transport protocol', '1895798', 'RMTP: a reliable multicast transport protocol', 0.659655162206)


('147537', 'How to sign given any trapdoor permutation', '62216', 'How to sign given any trapdoor function', 0.657615939142)


('62216', 'How to sign given any trapdoor function', '147537', 'How to sign given any trapdoor permutation', 0.657615939142)


('1190323', 'A garbage-collecting typed assembly language', '268954', 'From system F to typed assembly language', 0.655827273138)


('1190323', 'A garbage-collecting typed assembly language', '319345', 'From system F to typed assembly language', 0.655827273138)


('268954', 'From system F to typed assembly language', '1190323', 'A garbage-collecting typed assembly language', 0.655827273138)


('319345', 'From system F to typed assembly language', '1190323', 'A garbage-collecting typed assembly language', 0.655827273138)


('806737', 'Byzantine clock synchronization', '866262', 'Understanding Protocols for Byzantine Clock Synchronization', 0.655645916441)


('866262', 'Understanding Protocols for Byzantine Clock Synchronization', '806737', 'Byzantine clock synchronization', 0.655645916441)


('269549', 'Lottery and stride scheduling: flexibile proportional-share resource management', '888601', 'Lottery and Stride Scheduling: Flexible Proportional-share Resource Management', 0.654748421116)


('888601', 'Lottery and Stride Scheduling: Flexible Proportional-share Resource Management', '269549', 'Lottery and stride scheduling: flexibile proportional-share resource management', 0.654748421116)


('74861', 'Lightweight remote procedure call', '910306', 'Remote procedure call', 0.650599825805)


('77650', 'Lightweight remote procedure call', '910306', 'Remote procedure call', 0.650599825805)


('910306', 'Remote procedure call', '77650', 'Lightweight remote procedure call', 0.650599825805)


('910306', 'Remote procedure call', '74861', 'Lightweight remote procedure call', 0.650599825805)


('302435', 'Fault-tolerant broadcasts and related problems', '455', 'Fault-tolerant broadcasts', 0.6498839317)


('455', 'Fault-tolerant broadcasts', '302435', 'Fault-tolerant broadcasts and related problems', 0.6498839317)


('2313858', 'A case for end system multicast', '339337', 'A case for end system multicast (keynote address)', 0.649576135676)


('339337', 'A case for end system multicast (keynote address)', '2313858', 'A case for end system multicast', 0.649576135676)


('2162347', 'Optimistic generic broadcast', '756681', 'Generic Broadcast', 0.649466732315)


('756681', 'Generic Broadcast', '2162347', 'Optimistic generic broadcast', 0.649466732315)


('302436', 'Non-blocking atomic commitment', '675497', 'Revistiting the Relationship Between Non-Blocking Atomic Commitment and Consensus', 0.648886697578)


('675497', 'Revistiting the Relationship Between Non-Blocking Atomic Commitment and Consensus', '302436', 'Non-blocking atomic commitment', 0.648886697578)


('214406', 'A distributed mutual exclusion algorithm', '7352', 'A fast mutual exclusion algorithm', 0.648689143107)


('7352', 'A fast mutual exclusion algorithm', '214406', 'A distributed mutual exclusion algorithm', 0.648689143107)


('359585', 'Communicating sequential processes', '867516', 'Proof Rules for Communicating Sequential Processes', 0.648078752712)


('3921', 'Communicating sequential processes', '867516', 'Proof Rules for Communicating Sequential Processes', 0.648078752712)


('867516', 'Proof Rules for Communicating Sequential Processes', '359585', 'Communicating sequential processes', 0.648078752712)


('867516', 'Proof Rules for Communicating Sequential Processes', '3921', 'Communicating sequential processes', 0.648078752712)


('577306', 'Distributed Database Management', '7266', 'Transaction management in the R* distributed database management system', 0.647598377004)


('7266', 'Transaction management in the R* distributed database management system', '577306', 'Distributed Database Management', 0.647598377004)


('10608', 'Optimistic concurrency control for abstract data types', '54026', 'Commutativity-Based Concurrency Control for Abstract Data Types', 0.646685648701)


('54026', 'Commutativity-Based Concurrency Control for Abstract Data Types', '10608', 'Optimistic concurrency control for abstract data types', 0.646685648701)


('114904', 'Algebraic specification', '577099', 'Fundamentals of Algebraic Specification I', 0.646178554375)


('577099', 'Fundamentals of Algebraic Specification I', '114904', 'Algebraic specification', 0.646178554375)


('3990', 'Reduced instruction set computer architectures for VLSI', '641917', 'The case for the reduced instruction set computer', 0.64551458117)


('641917', 'The case for the reduced instruction set computer', '3990', 'Reduced instruction set computer architectures for VLSI', 0.64551458117)


('62222', 'Non-interactive zero-knowledge and its applications', '704739', 'Non-Interactive Zero-Knowledge Proof Systems', 0.643537217385)


('704739', 'Non-Interactive Zero-Knowledge Proof Systems', '62222', 'Non-interactive zero-knowledge and its applications', 0.643537217385)


('1251250', 'Design and evaluation of a continuous consistency model for replicated services', '566342', 'Design and evaluation of a conit-based continuous consistency model for replicated services', 0.642647246845)


('566342', 'Design and evaluation of a conit-based continuous consistency model for replicated services', '1251250', 'Design and evaluation of a continuous consistency model for replicated services', 0.642647246845)


('1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', '61076', 'Concurrency control in distributed database systems', 0.638437200901)


('1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', '356846', 'Concurrency Control in Distributed Database Systems', 0.638437200901)


('356846', 'Concurrency Control in Distributed Database Systems', '1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', 0.638437200901)


('61076', 'Concurrency control in distributed database systems', '1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', 0.638437200901)


('523581', 'Internet Routing Architectures', '557090', 'Internet Routing Architectures, Second Edition', 0.636825290247)


('557090', 'Internet Routing Architectures, Second Edition', '523581', 'Internet Routing Architectures', 0.636825290247)


('55530', 'A theory of atomic transactions', '726386', 'Atomic Transactions', 0.634936835655)


('726386', 'Atomic Transactions', '55530', 'A theory of atomic transactions', 0.634936835655)


('359176', 'How to share a secret', '36684', 'How to share a secret with cheaters', 0.634920762432)


('359176', 'How to share a secret', '704889', 'How to (Really) Share a Secret', 0.634920762432)


('359176', 'How to share a secret', '88978', 'How to (really) share a secret', 0.634920762432)


('359176', 'How to share a secret', '56181', 'How to share a secret with cheaters', 0.634920762432)


('36684', 'How to share a secret with cheaters', '359176', 'How to share a secret', 0.634920762432)


('56181', 'How to share a secret with cheaters', '359176', 'How to share a secret', 0.634920762432)


('704889', 'How to (Really) Share a Secret', '359176', 'How to share a secret', 0.634920762432)


('88978', 'How to (really) share a secret', '359176', 'How to share a secret', 0.634920762432)


('308440', 'Hybrid concurrency control for abstract data types', '54026', 'Commutativity-Based Concurrency Control for Abstract Data Types', 0.629002891608)


('54026', 'Commutativity-Based Concurrency Control for Abstract Data Types', '308440', 'Hybrid concurrency control for abstract data types', 0.629002891608)


('1268311', 'World-wide web cache consistency', '179671', 'The World-Wide Web', 0.626517099866)


('1268311', 'World-wide web cache consistency', '144639', 'The world-wide web', 0.626517099866)


('144639', 'The world-wide web', '1268311', 'World-wide web cache consistency', 0.626517099866)


('179671', 'The World-Wide Web', '1268311', 'World-wide web cache consistency', 0.626517099866)


('1361', 'CLU reference manual', '889164', 'ITS 1.5 Reference Manual', 0.626480001429)


('538622', 'CLU Reference Manual', '889164', 'ITS 1.5 Reference Manual', 0.626480001429)


('889164', 'ITS 1.5 Reference Manual', '538622', 'CLU Reference Manual', 0.626480001429)


('889164', 'ITS 1.5 Reference Manual', '1361', 'CLU reference manual', 0.626480001429)


('118229', 'Undeniable signatures', '705205', 'Convertible Undeniable Signatures', 0.626423799414)


('705205', 'Convertible Undeniable Signatures', '759579', 'Undeniable Signatures', 0.626423799414)


('705205', 'Convertible Undeniable Signatures', '118229', 'Undeniable signatures', 0.626423799414)


('759579', 'Undeniable Signatures', '705205', 'Convertible Undeniable Signatures', 0.626423799414)


('894734', 'The Sprite Remote Procedure Call System', '910306', 'Remote procedure call', 0.626066116382)


('910306', 'Remote procedure call', '894734', 'The Sprite Remote Procedure Call System', 0.626066116382)


('35357', 'Linear logic', '666394', 'A Taste of Linear Logic', 0.625256935696)


('666394', 'A Taste of Linear Logic', '35357', 'Linear logic', 0.625256935696)


('305713', 'Failure Detection and Randomization: A Hybrid Approach to Solve Consensus', '675629', 'Randomization and Failure Detection: A Hybrid Approach to Solve Consensus', 0.624216955923)


('675629', 'Randomization and Failure Detection: A Hybrid Approach to Solve Consensus', '305713', 'Failure Detection and Randomization: A Hybrid Approach to Solve Consensus', 0.624216955923)


('628959', 'Consensus-Based Fault-Tolerant Total Order Multicast', '830985', 'Fault-Tolerant Total Order Multicast to Asynchronous Groups', 0.623557280304)


('830985', 'Fault-Tolerant Total Order Multicast to Asynchronous Groups', '628959', 'Consensus-Based Fault-Tolerant Total Order Multicast', 0.623557280304)


('114876', 'Kolmogorov complexity and its applications', '261084', 'An introduction to Kolmogorov complexity and its applications (2nd ed.)', 0.622498216053)


('261084', 'An introduction to Kolmogorov complexity and its applications (2nd ed.)', '114876', 'Kolmogorov complexity and its applications', 0.622498216053)


('332656', 'Model checking', '681871', 'Software Model Checking', 0.622079180484)


('681871', 'Software Model Checking', '332656', 'Model checking', 0.622079180484)


('506024', 'Fault Detection for Byzantine Quorum Systems', '258650', 'Byzantine quorum systems', 0.621806480248)


('506024', 'Fault Detection for Byzantine Quorum Systems', '1035782', 'Byzantine quorum systems', 0.621806480248)


('789925', 'Fault Detection for Byzantine Quorum Systems', '258650', 'Byzantine quorum systems', 0.621806480248)


('789925', 'Fault Detection for Byzantine Quorum Systems', '1035782', 'Byzantine quorum systems', 0.621806480248)


('188183', 'Hash functions based on block ciphers: a synthetic approach', '716566', 'Hash Functions Based on Block Ciphers and Quaternary Codes', 0.619825898436)


('716566', 'Hash Functions Based on Block Ciphers and Quaternary Codes', '188183', 'Hash functions based on block ciphers: a synthetic approach', 0.619825898436)


('888816', 'ARGUS REFERENCE MANUAL', '889164', 'ITS 1.5 Reference Manual', 0.61980683798)


('889164', 'ITS 1.5 Reference Manual', '888816', 'ARGUS REFERENCE MANUAL', 0.61980683798)


('1399010', 'The load, capacity and availability of quorum systems', '903705', 'The Availability of Quorum Systems', 0.619204175235)


('1399010', 'The load, capacity and availability of quorum systems', '219629', 'The availability of quorum systems', 0.619204175235)


('219629', 'The availability of quorum systems', '1399010', 'The load, capacity and availability of quorum systems', 0.619204175235)


('219629', 'The availability of quorum systems', '903734', 'The Load, Capacity and Availability of Quorum Systems', 0.619204175235)


('219629', 'The availability of quorum systems', '279096', 'The Load, Capacity, and Availability of Quorum Systems', 0.619204175235)


('279096', 'The Load, Capacity, and Availability of Quorum Systems', '903705', 'The Availability of Quorum Systems', 0.619204175235)


('279096', 'The Load, Capacity, and Availability of Quorum Systems', '219629', 'The availability of quorum systems', 0.619204175235)


('903705', 'The Availability of Quorum Systems', '1399010', 'The load, capacity and availability of quorum systems', 0.619204175235)


('903705', 'The Availability of Quorum Systems', '903734', 'The Load, Capacity and Availability of Quorum Systems', 0.619204175235)


('903705', 'The Availability of Quorum Systems', '279096', 'The Load, Capacity, and Availability of Quorum Systems', 0.619204175235)


('903734', 'The Load, Capacity and Availability of Quorum Systems', '903705', 'The Availability of Quorum Systems', 0.619204175235)


('903734', 'The Load, Capacity and Availability of Quorum Systems', '219629', 'The availability of quorum systems', 0.619204175235)


('195579', 'Hardware support for fast capability-based addressing', '361070', 'Capability-based addressing', 0.618096958224)


('361070', 'Capability-based addressing', '195579', 'Hardware support for fast capability-based addressing', 0.618096958224)


('321279', 'On the Time Required to Perform Addition', '321438', 'On the Time Required to Perform Multiplication', 0.617890881004)


('321438', 'On the Time Required to Perform Multiplication', '321279', 'On the Time Required to Perform Addition', 0.617890881004)


('207195', 'Atomic Broadcast', '758421', 'Optimistic Atomic Broadcast', 0.616063216837)


('758421', 'Optimistic Atomic Broadcast', '207195', 'Atomic Broadcast', 0.616063216837)


('704739', 'Non-Interactive Zero-Knowledge Proof Systems', '705376', 'Non-Interactive Zero-Knowledge Proof of Knowledge and Chosen Ciphertext Attack', 0.61569143011)


('705376', 'Non-Interactive Zero-Knowledge Proof of Knowledge and Chosen Ciphertext Attack', '704739', 'Non-Interactive Zero-Knowledge Proof Systems', 0.61569143011)


('117606', 'Concerning the size of logical clocks in distributed systems', '675645', 'Plausible Clocks: Constant Size Logical Clocks for Distributed Systems', 0.615481027689)


('675645', 'Plausible Clocks: Constant Size Logical Clocks for Distributed Systems', '117606', 'Concerning the size of logical clocks in distributed systems', 0.615481027689)


('704739', 'Non-Interactive Zero-Knowledge Proof Systems', '90434', 'On the composition of zero-knowledge proof systems', 0.614421059204)


('90434', 'On the composition of zero-knowledge proof systems', '704739', 'Non-Interactive Zero-Knowledge Proof Systems', 0.614421059204)


('162046', 'Symbolic model checking: 1020 states and beyond', '530225', 'Symbolic Model Checking', 0.613881538785)


('530225', 'Symbolic Model Checking', '162046', 'Symbolic model checking: 1020 states and beyond', 0.613881538785)


('721656', 'Towards a Theory of Abstract Data Types: A Discussion on Problems and Tools', '889842', 'TOWARDS A THEORY FOR ABSTRACT DATA TYPES', 0.613748764933)


('889842', 'TOWARDS A THEORY FOR ABSTRACT DATA TYPES', '721656', 'Towards a Theory of Abstract Data Types: A Discussion on Problems and Tools', 0.613748764933)


('1756134', 'An efficient threshold public key cryptosystem secure against adaptive chosen ciphertext attack', '706340', 'A Practical Public Key Cryptosystem Provably Secure Against Adaptive Chosen Ciphertext Attack', 0.613211572993)


('706340', 'A Practical Public Key Cryptosystem Provably Secure Against Adaptive Chosen Ciphertext Attack', '1756134', 'An efficient threshold public key cryptosystem secure against adaptive chosen ciphertext attack', 0.613211572993)


('756681', 'Generic Broadcast', '758424', 'Thrifty Generic Broadcast', 0.613156277082)


('758424', 'Thrifty Generic Broadcast', '756681', 'Generic Broadcast', 0.613156277082)


('866204', 'The State Machine Approach: A Tutorial', '98167', 'Implementing fault-tolerant services using the state machine approach: a tutorial', 0.612800047824)


('98167', 'Implementing fault-tolerant services using the state machine approach: a tutorial', '866204', 'The State Machine Approach: A Tutorial', 0.612800047824)


('371598', 'The state of the art in distributed query processing', '3874', 'Distributed query processing', 0.61247669235)


('3874', 'Distributed query processing', '371598', 'The state of the art in distributed query processing', 0.61247669235)


('332656', 'Model checking', '786967', 'Model Checking Programs', 0.612400209835)


('786967', 'Model Checking Programs', '332656', 'Model checking', 0.612400209835)


('195795', 'Sharing and protection in a single-address-space operating system', '284547', 'The Mungi single-address-space operating system', 0.612159089339)


('284547', 'The Mungi single-address-space operating system', '195795', 'Sharing and protection in a single-address-space operating system', 0.612159089339)


('204152', 'Divergence control for distributed database systems', '356846', 'Concurrency Control in Distributed Database Systems', 0.611710590708)


('204152', 'Divergence control for distributed database systems', '61076', 'Concurrency control in distributed database systems', 0.611710590708)


('356846', 'Concurrency Control in Distributed Database Systems', '204152', 'Divergence control for distributed database systems', 0.611710590708)


('61076', 'Concurrency control in distributed database systems', '204152', 'Divergence control for distributed database systems', 0.611710590708)


('169855', 'MPI: a message passing interface', '244368', 'A high-performance, portable implementation of the MPI message passing interface standard', 0.609951517072)


('244368', 'A high-performance, portable implementation of the MPI message passing interface standard', '169855', 'MPI: a message passing interface', 0.609951517072)


('135453', 'Improving fast mutual exclusion', '7352', 'A fast mutual exclusion algorithm', 0.609399635155)


('7352', 'A fast mutual exclusion algorithm', '135453', 'Improving fast mutual exclusion', 0.609399635155)


('190956', 'Readings in database systems (2nd ed.)', '293457', 'Principles of distributed database systems (2nd ed.)', 0.609379134055)


('293457', 'Principles of distributed database systems (2nd ed.)', '190956', 'Readings in database systems (2nd ed.)', 0.609379134055)


('259450', 'The load and availability of Byzantine quorum systems', '1035782', 'Byzantine quorum systems', 0.605952417172)


('259450', 'The load and availability of Byzantine quorum systems', '258650', 'Byzantine quorum systems', 0.605952417172)


('356486', 'The Load and Availability of Byzantine Quorum Systems', '1035782', 'Byzantine quorum systems', 0.605952417172)


('356486', 'The Load and Availability of Byzantine Quorum Systems', '258650', 'Byzantine quorum systems', 0.605952417172)


('1965743', 'A decade of software model checking with SLAM', '681871', 'Software Model Checking', 0.605196270117)


('681871', 'Software Model Checking', '1965743', 'A decade of software model checking with SLAM', 0.605196270117)


('1398573', 'Efficient And Secure Pseudo-Random Number Generation', '704573', 'Efficient Parallel Pseudo-Random Number Generation', 0.604795082213)


('704573', 'Efficient Parallel Pseudo-Random Number Generation', '1398573', 'Efficient And Secure Pseudo-Random Number Generation', 0.604795082213)


('269459', 'Lock-free data structures', '898203', 'Correction of a Memory Management Method for Lock-Free Data Structures', 0.604489380297)


('898203', 'Correction of a Memory Management Method for Lock-Free Data Structures', '269459', 'Lock-free data structures', 0.604489380297)


('758421', 'Optimistic Atomic Broadcast', '795644', 'Optimistic atomic broadcast: a pragmatic viewpoint', 0.604424407709)


('795644', 'Optimistic atomic broadcast: a pragmatic viewpoint', '758421', 'Optimistic Atomic Broadcast', 0.604424407709)


('357110', 'A Proof System for Communicating Sequential Processes', '833', 'A Theory of Communicating Sequential Processes', 0.603729009273)


('833', 'A Theory of Communicating Sequential Processes', '357110', 'A Proof System for Communicating Sequential Processes', 0.603729009273)


('332656', 'Model checking', '530225', 'Symbolic Model Checking', 0.603525574759)


('530225', 'Symbolic Model Checking', '332656', 'Model checking', 0.603525574759)


('705223', 'The MD4 Message Digest Algorithm', 'RFC1321', 'The MD5 Message-Digest Algorithm', 0.602807033806)


('RFC1321', 'The MD5 Message-Digest Algorithm', '705223', 'The MD4 Message Digest Algorithm', 0.602807033806)


('165164', 'Transactional memory: architectural support for lock-free data structures', '269459', 'Lock-free data structures', 0.600554811102)


('269459', 'Lock-free data structures', '165164', 'Transactional memory: architectural support for lock-free data structures', 0.600554811102)


('322188', 'Reaching Agreement in the Presence of Faults', '5931', 'Reaching approximate agreement in the presence of faults', 0.600307105178)


('5931', 'Reaching approximate agreement in the presence of faults', '322188', 'Reaching Agreement in the Presence of Faults', 0.600307105178)


('16723', "MC68851: paged memory management unit user's manual", '534136', "MC88200 Cache-Memory Management Unit User's Manual", 0.600208519876)


('534136', "MC88200 Cache-Memory Management Unit User's Manual", '16723', "MC68851: paged memory management unit user's manual", 0.600208519876)


('206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', '275858', 'A Note on Total Ordering Multicast Using Propagation Trees', 0.599929959063)


('275858', 'A Note on Total Ordering Multicast Using Propagation Trees', '206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', 0.599929959063)


('7352', 'A fast mutual exclusion algorithm', '898349', 'Fast Mutual Exclusion, Even with Contention', 0.599348818708)


('898349', 'Fast Mutual Exclusion, Even with Contention', '7352', 'A fast mutual exclusion algorithm', 0.599348818708)


('505704', 'TCP congestion control with a misbehaving receiver', 'RFC2581', 'TCP Congestion Control', 0.599053991877)


('RFC2581', 'TCP Congestion Control', '505704', 'TCP congestion control with a misbehaving receiver', 0.599053991877)


('323642', 'Reliable object storage to support atomic actions', '889921', 'RELIABLE OBJECTS STORAGE TO SUPPORT ATOMIC ACTIONS', 0.598904067843)


('889921', 'RELIABLE OBJECTS STORAGE TO SUPPORT ATOMIC ACTIONS', '323642', 'Reliable object storage to support atomic actions', 0.598904067843)


('239300', 'A Methodology for Testing Intrusion Detection Systems', '625759', 'A Software Platform for Testing Intrusion Detection Systems', 0.596526978235)


('625759', 'A Software Platform for Testing Intrusion Detection Systems', '239300', 'A Methodology for Testing Intrusion Detection Systems', 0.596526978235)


('106729', 'Fault-tolerant distributed computing', '11334', 'Impact of communication networks on fault-tolerant distributed computing', 0.596326897906)


('11334', 'Impact of communication networks on fault-tolerant distributed computing', '106729', 'Fault-tolerant distributed computing', 0.596326897906)


('183471', 'Improved low-density subset sum algorithms', '2461', 'Solving low-density subset sum problems', 0.593870315745)


('2461', 'Solving low-density subset sum problems', '183471', 'Improved low-density subset sum algorithms', 0.593870315745)


('1041502', 'An overview of the Amoeba distributed operating system', '66391', 'The performance of the Amoeba distributed operating system', 0.592749353394)


('66391', 'The performance of the Amoeba distributed operating system', '1041502', 'An overview of the Amoeba distributed operating system', 0.592749353394)


('570812', 'Distributed algorithmic mechanism design: recent results and future directions', '997226', 'Distributed algorithmic mechanism design', 0.591483941218)


('997226', 'Distributed algorithmic mechanism design', '570812', 'Distributed algorithmic mechanism design: recent results and future directions', 0.591483941218)


('850710', 'The Cambridge File Server', '850711', 'An asynchronous garbage collector for the Cambridge File Server', 0.591258696775)


('850711', 'An asynchronous garbage collector for the Cambridge File Server', '850710', 'The Cambridge File Server', 0.591258696775)


('77836', 'Communication complexity of PRAMs', '802192', 'Communication complexity', 0.591189526495)


('802192', 'Communication complexity', '77836', 'Communication complexity of PRAMs', 0.591189526495)


('378797', 'Design and implementation of generics for the .NET Common language runtime', '572615', 'Essential .NET: The Common Language Runtime', 0.590949882363)


('572615', 'Essential .NET: The Common Language Runtime', '378797', 'Design and implementation of generics for the .NET Common language runtime', 0.590949882363)


('106729', 'Fault-tolerant distributed computing', '504141', 'Shared logging services for fault-tolerant distributed computing', 0.590581713681)


('504141', 'Shared logging services for fault-tolerant distributed computing', '106729', 'Fault-tolerant distributed computing', 0.590581713681)


('52331', 'Multicast routing in internetworks and extended LANs', '78953', 'Multicast routing in datagram internetworks and extended LANs', 0.59044505482)


('78953', 'Multicast routing in datagram internetworks and extended LANs', '52331', 'Multicast routing in internetworks and extended LANs', 0.59044505482)


('176935', 'Parallelism in relational database management systems', '556803', 'Database Management Systems', 0.589950432811)


('176935', 'Parallelism in relational database management systems', '265036', 'Database management systems', 0.589950432811)


('265036', 'Database management systems', '176935', 'Parallelism in relational database management systems', 0.589950432811)


('556803', 'Database Management Systems', '176935', 'Parallelism in relational database management systems', 0.589950432811)


('332656', 'Model checking', '786949', 'Java Model Checking', 0.589501777842)


('786949', 'Java Model Checking', '332656', 'Model checking', 0.589501777842)


('1080671', 'Numerical Libraries and the Grid', '582048', 'Numerical libraries and the grid: the GrADS experiments with ScaLAPACK', 0.588651885429)


('582048', 'Numerical libraries and the grid: the GrADS experiments with ScaLAPACK', '1080671', 'Numerical Libraries and the Grid', 0.588651885429)


('143523', 'Fast mutual exclusion for uniprocessors', '7352', 'A fast mutual exclusion algorithm', 0.588618963855)


('7352', 'A fast mutual exclusion algorithm', '143523', 'Fast mutual exclusion for uniprocessors', 0.588618963855)


('62594', 'On achieving consensus using a shared memory', '83340', 'Fast randomized consensus using shared memory', 0.588149220414)


('83340', 'Fast randomized consensus using shared memory', '62594', 'On achieving consensus using a shared memory', 0.588149220414)


('100511', 'The C programming language', '174157', 'The design of the E programming language', 0.588133729324)


('1098666', 'A programming language', '174157', 'The design of the E programming language', 0.588133729324)


('174157', 'The design of the E programming language', '7519', 'The C programming language', 0.588133729324)


('174157', 'The design of the E programming language', '6645', 'The C++ programming language', 0.588133729324)


('174157', 'The design of the E programming language', '1098666', 'A programming language', 0.588133729324)


('174157', 'The design of the E programming language', '100511', 'The C programming language', 0.588133729324)


('6645', 'The C++ programming language', '174157', 'The design of the E programming language', 0.588133729324)


('7519', 'The C programming language', '174157', 'The design of the E programming language', 0.588133729324)


('66391', 'The performance of the Amoeba distributed operating system', '96281', 'Experiences with the Amoeba distributed operating system', 0.586847068889)


('96281', 'Experiences with the Amoeba distributed operating system', '66391', 'The performance of the Amoeba distributed operating system', 0.586847068889)


('1313891', 'A Simple and Efficient Randomized Byzantine Agreement Algorithm', '867658', 'Randomized Byzantine Agreement', 0.586627237958)


('867658', 'Randomized Byzantine Agreement', '1313891', 'A Simple and Efficient Randomized Byzantine Agreement Algorithm', 0.586627237958)


('361070', 'Capability-based addressing', '801885', 'IBM System/38 support for capability-based addressing', 0.58455784711)


('801885', 'IBM System/38 support for capability-based addressing', '361070', 'Capability-based addressing', 0.58455784711)


('2329211', 'Wide-area Internet traffic patterns and characteristics', '894652', 'Measurements of Wide Area Internet TraffiC', 0.584397095495)


('894652', 'Measurements of Wide Area Internet TraffiC', '2329211', 'Wide-area Internet traffic patterns and characteristics', 0.584397095495)


('292471', 'Garbage collecting the Internet: a survey of distributed garbage collection', '664687', 'A Survey of Distributed Garbage Collection Techniques', 0.581769952902)


('664687', 'A Survey of Distributed Garbage Collection Techniques', '292471', 'Garbage collecting the Internet: a survey of distributed garbage collection', 0.581769952902)


('144639', 'The world-wide web', '195680', 'A caching relay for the World Wide Web', 0.581112324586)


('179671', 'The World-Wide Web', '195680', 'A caching relay for the World Wide Web', 0.581112324586)


('195680', 'A caching relay for the World Wide Web', '144639', 'The world-wide web', 0.581112324586)


('195680', 'A caching relay for the World Wide Web', '179671', 'The World-Wide Web', 0.581112324586)


('129616', 'Alpha architecture reference manual', '40660', 'VAX architecture reference manual', 0.580528712398)


('40660', 'VAX architecture reference manual', '129616', 'Alpha architecture reference manual', 0.580528712398)


('143508', 'Architecture support for single address space operating systems', '284547', 'The Mungi single-address-space operating system', 0.579936436649)


('284547', 'The Mungi single-address-space operating system', '143508', 'Architecture support for single address space operating systems', 0.579936436649)


('207195', 'Atomic Broadcast', '831138', 'Probabilistic Atomic Broadcast', 0.579917951224)


('831138', 'Probabilistic Atomic Broadcast', '207195', 'Atomic Broadcast', 0.579917951224)


('118234', 'On the classification of ideal secret sharing schemes (extended abstract)', '705516', 'On the Information Rate of Secret Sharing Schemes (Extended Abstract)', 0.579912599799)


('705516', 'On the Information Rate of Secret Sharing Schemes (Extended Abstract)', '118234', 'On the classification of ideal secret sharing schemes (extended abstract)', 0.579912599799)


('113420', 'A tight upper bound on the benefits of replication and consistency control protocols', '215184', 'A Tight Upper Bound on the Benefits of Replica Control Protocols', 0.579725985181)


('215184', 'A Tight Upper Bound on the Benefits of Replica Control Protocols', '113420', 'A tight upper bound on the benefits of replication and consistency control protocols', 0.579725985181)


('758421', 'Optimistic Atomic Broadcast', '880616', 'Processing Transactions over Optimistic Atomic Broadcast Protocols', 0.579619030504)


('880616', 'Processing Transactions over Optimistic Atomic Broadcast Protocols', '758421', 'Optimistic Atomic Broadcast', 0.579619030504)


('RFC1771', 'A Border Gateway Protocol 4 (BGP-4)', 'RFC1772', 'Application of the Border Gateway Protocol in the Internet', 0.578720913972)


('RFC1772', 'Application of the Border Gateway Protocol in the Internet', 'RFC1771', 'A Border Gateway Protocol 4 (BGP-4)', 0.578720913972)


('363167', 'Additional comments on a problem in concurrent programming control', '365617', 'Solution of a problem in concurrent programming control', 0.577753074454)


('365595', 'Additional comments on a problem in concurrent programming control', '365617', 'Solution of a problem in concurrent programming control', 0.577753074454)


('365617', 'Solution of a problem in concurrent programming control', '365595', 'Additional comments on a problem in concurrent programming control', 0.577753074454)


('365617', 'Solution of a problem in concurrent programming control', '363167', 'Additional comments on a problem in concurrent programming control', 0.577753074454)


('313249', 'A prototype implementation of archival Intermemory', '785953', 'Towards an Archival Intermemory', 0.576503290129)


('785953', 'Towards an Archival Intermemory', '313249', 'A prototype implementation of archival Intermemory', 0.576503290129)


('338363', 'Exploiting IP multicast in content-based publish-subscribe systems', '880590', 'An Efficient Multicast Protocol for Content-Based Publish-Subscribe Systems', 0.575226749927)


('880590', 'An Efficient Multicast Protocol for Content-Based Publish-Subscribe Systems', '338363', 'Exploiting IP multicast in content-based publish-subscribe systems', 0.575226749927)


('1090696', 'Awarded Best Student Paper! - Pond: The OceanStore Prototype', '1973356', 'Pond: the oceanstore prototype', 0.574064130439)


('1973356', 'Pond: the oceanstore prototype', '1090696', 'Awarded Best Student Paper! - Pond: The OceanStore Prototype', 0.574064130439)


('148286', 'Numerical recipes in C (2nd ed.): the art of scientific computing', '42249', 'Numerical recipes in C: the art of scientific computing', 0.573882354699)


('42249', 'Numerical recipes in C: the art of scientific computing', '148286', 'Numerical recipes in C (2nd ed.): the art of scientific computing', 0.573882354699)


('144639', 'The world-wide web', '232721', 'An investigation of documents from the World Wide Web', 0.573628131598)


('179671', 'The World-Wide Web', '232721', 'An investigation of documents from the World Wide Web', 0.573628131598)


('232721', 'An investigation of documents from the World Wide Web', '144639', 'The world-wide web', 0.573628131598)


('232721', 'An investigation of documents from the World Wide Web', '179671', 'The World-Wide Web', 0.573628131598)


('263944', 'On concurrent programming', '356624', 'Concurrent Programming Concepts', 0.573237016017)


('356624', 'Concurrent Programming Concepts', '263944', 'On concurrent programming', 0.573237016017)


('323631', 'A trace-driven analysis of the UNIX 4.2 BSD file system', '894075', 'A Trace-Driven Analysis of the UNIX 4.2BSD File System', 0.572887388774)


('894075', 'A Trace-Driven Analysis of the UNIX 4.2BSD File System', '323631', 'A trace-driven analysis of the UNIX 4.2 BSD file system', 0.572887388774)


('1041502', 'An overview of the Amoeba distributed operating system', '96281', 'Experiences with the Amoeba distributed operating system', 0.572266050239)


('96281', 'Experiences with the Amoeba distributed operating system', '1041502', 'An overview of the Amoeba distributed operating system', 0.572266050239)


('122129', 'Atomic broadcast in one phase', '207195', 'Atomic Broadcast', 0.572181840361)


('207195', 'Atomic Broadcast', '122129', 'Atomic broadcast in one phase', 0.572181840361)


('357110', 'A Proof System for Communicating Sequential Processes', '867516', 'Proof Rules for Communicating Sequential Processes', 0.572060509541)


('867516', 'Proof Rules for Communicating Sequential Processes', '357110', 'A Proof System for Communicating Sequential Processes', 0.572060509541)


('2156355', 'Symbolic model checking for asynchronous boolean programs', '530225', 'Symbolic Model Checking', 0.570903393974)


('530225', 'Symbolic Model Checking', '2156355', 'Symbolic model checking for asynchronous boolean programs', 0.570903393974)


('301287', 'Algorithmic mechanism design (extended abstract)', '997226', 'Distributed algorithmic mechanism design', 0.569761461736)


('997226', 'Distributed algorithmic mechanism design', '301287', 'Algorithmic mechanism design (extended abstract)', 0.569761461736)


('602261', 'Implementation techniques for main memory database systems', '627538', 'Main Memory Database Systems: An Overview', 0.56917313624)


('627538', 'Main Memory Database Systems: An Overview', '602261', 'Implementation techniques for main memory database systems', 0.56917313624)


('66391', 'The performance of the Amoeba distributed operating system', '79467', 'Amoeba: A Distributed Operating System for the 1990s', 0.568275402436)


('79467', 'Amoeba: A Distributed Operating System for the 1990s', '66391', 'The performance of the Amoeba distributed operating system', 0.568275402436)


('214917', 'Reduced instruction set computers', '641917', 'The case for the reduced instruction set computer', 0.567532013652)


('641917', 'The case for the reduced instruction set computer', '214917', 'Reduced instruction set computers', 0.567532013652)


('49077', 'Distributed algorithms and protocols', '525656', 'Distributed Algorithms', 0.567378241881)


('525656', 'Distributed Algorithms', '49077', 'Distributed algorithms and protocols', 0.567378241881)


('42790', 'Principles of database and knowledge-base systems, Vol. I', '533142', 'Principles of Database and Knowledge-Base Systems: Volume II: The New Technologies', 0.567188871797)


('533142', 'Principles of Database and Knowledge-Base Systems: Volume II: The New Technologies', '42790', 'Principles of database and knowledge-base systems, Vol. I', 0.567188871797)


('705519', 'Fair Public-Key Cryptosystems', '746434', 'Distributed Public Key Cryptosystems', 0.566910518148)


('746434', 'Distributed Public Key Cryptosystems', '705519', 'Fair Public-Key Cryptosystems', 0.566910518148)


('2343', 'Programming in Prolog (2nd ed.)', '560991', 'Programming in PROLOG', 0.565886640987)


('560991', 'Programming in PROLOG', '2343', 'Programming in Prolog (2nd ed.)', 0.565886640987)


('167558', 'A Taxonomy of Distributed Mutual Exclusion', '214406', 'A distributed mutual exclusion algorithm', 0.563237245641)


('214406', 'A distributed mutual exclusion algorithm', '167558', 'A Taxonomy of Distributed Mutual Exclusion', 0.563237245641)


('559', 'A note on denial-of-service in operating systems', '830511', 'A Note on the Denial-of-Service Problem', 0.56237216813)


('830511', 'A Note on the Denial-of-Service Problem', '559', 'A note on denial-of-service in operating systems', 0.56237216813)


('114770', 'Performance Analysis of Two-Phase Locking', '3151', 'Beyond two-phase locking', 0.561356029055)


('3151', 'Beyond two-phase locking', '114770', 'Performance Analysis of Two-Phase Locking', 0.561356029055)


('356573', 'Virtual Memory', '961069', 'The multics virtual memory', 0.560265388519)


('961069', 'The multics virtual memory', '356573', 'Virtual Memory', 0.560265388519)


('106729', 'Fault-tolerant distributed computing', '31332', 'On the reliability of consensus-based fault-tolerant distributed computing systems', 0.560232478485)


('31332', 'On the reliability of consensus-based fault-tolerant distributed computing systems', '106729', 'Fault-tolerant distributed computing', 0.560232478485)


('3874', 'Distributed query processing', '509292', 'Distributed query processing in a relational data base system', 0.559125690745)


('509292', 'Distributed query processing in a relational data base system', '3874', 'Distributed query processing', 0.559125690745)


('RFC1813', 'NFS Version 3 Protocol Specification', 'RFC3530', 'Network File System (NFS) version 4 Protocol', 0.558056349746)


('RFC3530', 'Network File System (NFS) version 4 Protocol', 'RFC1813', 'NFS Version 3 Protocol Specification', 0.558056349746)


('280468', 'Computer architecture (2nd ed.): a quantitative approach', '90518', 'High-performance computer architecture (2nd ed.)', 0.55778229372)


('90518', 'High-performance computer architecture (2nd ed.)', '280468', 'Computer architecture (2nd ed.): a quantitative approach', 0.55778229372)


('2448947', 'Lightweight locking for main memory database systems', '627538', 'Main Memory Database Systems: An Overview', 0.557707388505)


('627538', 'Main Memory Database Systems: An Overview', '2448947', 'Lightweight locking for main memory database systems', 0.557707388505)


('1698157', 'DCAS-based concurrent deques supporting bulk allocation', '758425', 'Even Better DCAS-Based Concurrent Deques', 0.557500372978)


('758425', 'Even Better DCAS-Based Concurrent Deques', '1698157', 'DCAS-based concurrent deques supporting bulk allocation', 0.557500372978)


('592868', 'Dynamically forecasting network performance using the Network  Weather Service', '823158', 'Forecasting network performance to support dynamic scheduling using the network weather service', 0.557242411435)


('823158', 'Forecasting network performance to support dynamic scheduling using the network weather service', '592868', 'Dynamically forecasting network performance using the Network  Weather Service', 0.557242411435)


('135453', 'Improving fast mutual exclusion', '898349', 'Fast Mutual Exclusion, Even with Contention', 0.556429799751)


('898349', 'Fast Mutual Exclusion, Even with Contention', '135453', 'Improving fast mutual exclusion', 0.556429799751)


('1063393', 'Composite registers', '899008', 'Multiple-Writer Composite Registers', 0.556031939778)


('898996', 'Composite Registers', '899008', 'Multiple-Writer Composite Registers', 0.556031939778)


('899008', 'Multiple-Writer Composite Registers', '1063393', 'Composite registers', 0.556031939778)


('899008', 'Multiple-Writer Composite Registers', '93396', 'Composite registers', 0.556031939778)


('899008', 'Multiple-Writer Composite Registers', '898996', 'Composite Registers', 0.556031939778)


('93396', 'Composite registers', '899008', 'Multiple-Writer Composite Registers', 0.556031939778)


('356588', 'System Deadlocks', '363160', 'Prevention of system deadlocks', 0.555521197397)


('363160', 'Prevention of system deadlocks', '356588', 'System Deadlocks', 0.555521197397)


('358147', 'A real-time garbage collector based on the lifetimes of objects', '378823', 'A parallel, real-time garbage collector', 0.554594322523)


('378823', 'A parallel, real-time garbage collector', '358147', 'A real-time garbage collector based on the lifetimes of objects', 0.554594322523)


('1041502', 'An overview of the Amoeba distributed operating system', '79467', 'Amoeba: A Distributed Operating System for the 1990s', 0.554155822259)


('79467', 'Amoeba: A Distributed Operating System for the 1990s', '1041502', 'An overview of the Amoeba distributed operating system', 0.554155822259)


('624002', 'RMP: Fault-Tolerant Group Communication', '880005', 'Newtop: a fault-tolerant group communication protocol', 0.553570628812)


('880005', 'Newtop: a fault-tolerant group communication protocol', '624002', 'RMP: Fault-Tolerant Group Communication', 0.553570628812)


('203042', 'Introduction to distributed algorithms', '525656', 'Distributed Algorithms', 0.553388985276)


('525656', 'Distributed Algorithms', '203042', 'Introduction to distributed algorithms', 0.553388985276)


('1754538', 'Robust threshold DSS signatures', '706011', 'Threshold DSS Signatures without a Trusted Party', 0.552904006043)


('706011', 'Threshold DSS Signatures without a Trusted Party', '1754538', 'Robust threshold DSS signatures', 0.552904006043)


('293457', 'Principles of distributed database systems (2nd ed.)', '302430', 'Distributed systems (2nd Ed.)', 0.552008310444)


('302430', 'Distributed systems (2nd Ed.)', '293457', 'Principles of distributed database systems (2nd ed.)', 0.552008310444)


('214455', 'Performance of the VAX-11/780 translation buffer: simulation and measurement', '357356', 'Cache Performance in the VAX-11/780', 0.551867448404)


('357356', 'Cache Performance in the VAX-11/780', '214455', 'Performance of the VAX-11/780 translation buffer: simulation and measurement', 0.551867448404)


('219629', 'The availability of quorum systems', '903558', 'Optimal Availability Quorum Systems: Theory and Practice', 0.551748986557)


('290428', 'Optimal availability quorum systems: theory and practice', '219629', 'The availability of quorum systems', 0.551748986557)


('290428', 'Optimal availability quorum systems: theory and practice', '903705', 'The Availability of Quorum Systems', 0.551748986557)


('903558', 'Optimal Availability Quorum Systems: Theory and Practice', '219629', 'The availability of quorum systems', 0.551748986557)


('903558', 'Optimal Availability Quorum Systems: Theory and Practice', '903705', 'The Availability of Quorum Systems', 0.551748986557)


('903705', 'The Availability of Quorum Systems', '903558', 'Optimal Availability Quorum Systems: Theory and Practice', 0.551748986557)


('285291', 'Modeling TCP throughput: a simple model and its empirical validation', '336111', 'Modeling TCP Reno performance: a simple model and its empirical validation', 0.550438198848)


('336111', 'Modeling TCP Reno performance: a simple model and its empirical validation', '285291', 'Modeling TCP throughput: a simple model and its empirical validation', 0.550438198848)


('50245', 'A performance analysis of the gamma database machine', '627398', 'The Gamma Database Machine Project', 0.550376297917)


('627398', 'The Gamma Database Machine Project', '50245', 'A performance analysis of the gamma database machine', 0.550376297917)


('1325881', 'Lazy maintenance of materialized views', '2480856', 'Materialized Views', 0.55022468231)


('2480856', 'Materialized Views', '1325881', 'Lazy maintenance of materialized views', 0.55022468231)


('79467', 'Amoeba: A Distributed Operating System for the 1990s', '96281', 'Experiences with the Amoeba distributed operating system', 0.548637831722)


('96281', 'Experiences with the Amoeba distributed operating system', '79467', 'Amoeba: A Distributed Operating System for the 1990s', 0.548637831722)


('357101', 'Output Guards and Nondeterminism in “Communicating Sequential Processes”', '359585', 'Communicating sequential processes', 0.548415213935)


('357101', 'Output Guards and Nondeterminism in “Communicating Sequential Processes”', '3921', 'Communicating sequential processes', 0.548415213935)


('359585', 'Communicating sequential processes', '357101', 'Output Guards and Nondeterminism in “Communicating Sequential Processes”', 0.548415213935)


('3921', 'Communicating sequential processes', '357101', 'Output Guards and Nondeterminism in “Communicating Sequential Processes”', 0.548415213935)


('190956', 'Readings in database systems (2nd ed.)', '302430', 'Distributed systems (2nd Ed.)', 0.548167659587)


('302430', 'Distributed systems (2nd Ed.)', '190956', 'Readings in database systems (2nd ed.)', 0.548167659587)


('361281', 'Properties of the working-set model', '363141', 'The working set model for program behavior', 0.548057350608)


('363141', 'The working set model for program behavior', '361281', 'Properties of the working-set model', 0.548057350608)


('830567', 'The Decentralized Non-Blocking Atomic Commitment Protocol', '847188', 'Reducing the cost for non-blocking in atomic commitment', 0.548037530495)


('847188', 'Reducing the cost for non-blocking in atomic commitment', '830567', 'The Decentralized Non-Blocking Atomic Commitment Protocol', 0.548037530495)


('320129', 'Introduction to a system for distributed databases (SDD-1)', '320131', 'Concurrency control in a system for distributed databases (SDD-1)', 0.54706224492)


('320131', 'Concurrency control in a system for distributed databases (SDD-1)', '320129', 'Introduction to a system for distributed databases (SDD-1)', 0.54706224492)


('758421', 'Optimistic Atomic Broadcast', '858981', 'Using Optimistic Atomic Broadcast in Transaction Processing Systems', 0.546787529957)


('858981', 'Using Optimistic Atomic Broadcast in Transaction Processing Systems', '758421', 'Optimistic Atomic Broadcast', 0.546787529957)


('135453', 'Improving fast mutual exclusion', '143523', 'Fast mutual exclusion for uniprocessors', 0.546468303539)


('143523', 'Fast mutual exclusion for uniprocessors', '135453', 'Improving fast mutual exclusion', 0.546468303539)


('807045', 'Programming with abstract data types', '889842', 'TOWARDS A THEORY FOR ABSTRACT DATA TYPES', 0.546046547661)


('889842', 'TOWARDS A THEORY FOR ABSTRACT DATA TYPES', '807045', 'Programming with abstract data types', 0.546046547661)


('31648', 'System-level fault diagnosis:  A survey', '708674', 'System level fault-diagnosis in distributed systems', 0.543384904969)


('708674', 'System level fault-diagnosis in distributed systems', '31648', 'System-level fault diagnosis:  A survey', 0.543384904969)


('1201210', 'Smart Cards', '172309', 'Authentication and delegation with smart-cards', 0.543347856703)


('1201210', 'Smart Cards', '670913', 'Authentication and Delegation with Smart-cards', 0.543347856703)


('172309', 'Authentication and delegation with smart-cards', '1201210', 'Smart Cards', 0.543347856703)


('670913', 'Authentication and Delegation with Smart-cards', '1201210', 'Smart Cards', 0.543347856703)


('4198', 'An introduction to database systems: vol. I (4th ed.)', '77706', 'An introduction to database systems: vol. 1 (5th ed.)', 0.543285010931)


('77706', 'An introduction to database systems: vol. 1 (5th ed.)', '4198', 'An introduction to database systems: vol. I (4th ed.)', 0.543285010931)


('102808', 'Wait-free synchronization', '62593', 'Impossibility and universality results for wait-free synchronization', 0.543132249073)


('62593', 'Impossibility and universality results for wait-free synchronization', '102808', 'Wait-free synchronization', 0.543132249073)


('888601', 'Lottery and Stride Scheduling: Flexible Proportional-share Resource Management', '889650', 'Stride Scheduling: Deterministic Proportional- Share Resource Management', 0.542994423494)


('889650', 'Stride Scheduling: Deterministic Proportional- Share Resource Management', '888601', 'Lottery and Stride Scheduling: Flexible Proportional-share Resource Management', 0.542994423494)


('759192', 'Boolean and Cartesian Abstraction for Model Checking C Programs', '786967', 'Model Checking Programs', 0.542284823676)


('786967', 'Model Checking Programs', '759192', 'Boolean and Cartesian Abstraction for Model Checking C Programs', 0.542284823676)


('130707', 'TOMP a total ordering multicast protocol', '206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', 0.54009923566)


('206343', 'A Total Ordering Multicast Protocol Using Propagation Trees', '130707', 'TOMP a total ordering multicast protocol', 0.54009923566)


('112608', 'Optimal coteries', '181159', 'Optimal coteries and voting schemes', 0.539778668713)


('181159', 'Optimal coteries and voting schemes', '112608', 'Optimal coteries', 0.539778668713)


('806851', 'Specification and implementation of resilient, atomic data types', '889926', 'SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES', 0.538721233782)


('889926', 'SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES', '806851', 'Specification and implementation of resilient, atomic data types', 0.538721233782)


('1083333', 'Awarded Best Paper! - Venti: A New Approach to Archival Data Storage', '651321', 'Venti: A New Approach to Archival Storage', 0.537781886084)


('651321', 'Venti: A New Approach to Archival Storage', '1083333', 'Awarded Best Paper! - Venti: A New Approach to Archival Data Storage', 0.537781886084)


('103728', 'An efficient and fault-tolerant solution for distributed mutual exclusion', '72994', 'Efficient solution to the distributed mutual exclusion problem', 0.537706393237)


('72994', 'Efficient solution to the distributed mutual exclusion problem', '103728', 'An efficient and fault-tolerant solution for distributed mutual exclusion', 0.537706393237)


('143523', 'Fast mutual exclusion for uniprocessors', '898349', 'Fast Mutual Exclusion, Even with Contention', 0.537455412332)


('898349', 'Fast Mutual Exclusion, Even with Contention', '143523', 'Fast mutual exclusion for uniprocessors', 0.537455412332)


('167105', 'Fast asynchronous Byzantine agreement with optimal resilience', '323609', 'Fast asynchronous Byzantine agreement (extended abstract)', 0.537115866782)


('323609', 'Fast asynchronous Byzantine agreement (extended abstract)', '167105', 'Fast asynchronous Byzantine agreement with optimal resilience', 0.537115866782)


('227225', 'Group communication', '503341', 'The SecureRing group communication system', 0.536354340927)


('503341', 'The SecureRing group communication system', '227225', 'Group communication', 0.536354340927)


('270952', 'A Comment on "A Total Ordering Multicast Protocol Using Propagation Trees"', '275858', 'A Note on Total Ordering Multicast Using Propagation Trees', 0.536275638612)


('275858', 'A Note on Total Ordering Multicast Using Propagation Trees', '270952', 'A Comment on "A Total Ordering Multicast Protocol Using Propagation Trees"', 0.536275638612)


('571638', 'COCA: A secure distributed online certification authority', '867167', 'COCA: A Secure Distributed On-line Certification Authority', 0.535448595333)


('867167', 'COCA: A Secure Distributed On-line Certification Authority', '571638', 'COCA: A secure distributed online certification authority', 0.535448595333)


('269549', 'Lottery and stride scheduling: flexibile proportional-share resource management', '889650', 'Stride Scheduling: Deterministic Proportional- Share Resource Management', 0.534969337392)


('889650', 'Stride Scheduling: Deterministic Proportional- Share Resource Management', '269549', 'Lottery and stride scheduling: flexibile proportional-share resource management', 0.534969337392)


('353362', 'Network attached storage architecture', '651314', 'Strong Security for Network-Attached Storage', 0.534709548123)


('651314', 'Strong Security for Network-Attached Storage', '353362', 'Network attached storage architecture', 0.534709548123)


('585777', 'Wireless sensor networks: a survey', '662464', 'Time Synchronization for Wireless Sensor Networks', 0.534604705084)


('662464', 'Time Synchronization for Wireless Sensor Networks', '585777', 'Wireless sensor networks: a survey', 0.534604705084)


('316231', 'An analysis of BGP convergence properties', '881566', 'An Experimental Analysis of BGP Convergence Time', 0.534250688544)


('881566', 'An Experimental Analysis of BGP Convergence Time', '316231', 'An analysis of BGP convergence properties', 0.534250688544)


('1382847', 'Randomized byzantine generals', '42229', 'An O(log n) expected rounds randomized byzantine generals protocol', 0.533483044584)


('42229', 'An O(log n) expected rounds randomized byzantine generals protocol', '1382847', 'Randomized byzantine generals', 0.533483044584)


('1035758', 'Synchronous Byzantine quorum systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.533115944861)


('259454', 'Synchronous Byzantine quorum systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.533115944861)


('737912', 'Dynamic Byzantine Quorum Systems', '259454', 'Synchronous Byzantine quorum systems', 0.533115944861)


('737912', 'Dynamic Byzantine Quorum Systems', '1035758', 'Synchronous Byzantine quorum systems', 0.533115944861)


('2312782', 'Anonymous connections and onion routing', '293443', 'Onion routing', 0.53252787223)


('293443', 'Onion routing', '2312782', 'Anonymous connections and onion routing', 0.53252787223)


('664687', 'A Survey of Distributed Garbage Collection Techniques', '664824', 'Uniprocessor Garbage Collection Techniques', 0.532246651619)


('664824', 'Uniprocessor Garbage Collection Techniques', '664687', 'A Survey of Distributed Garbage Collection Techniques', 0.532246651619)


('1596643', 'Push-pull functional reactive programming', '349331', 'Functional reactive programming from first principles', 0.531271222534)


('349331', 'Functional reactive programming from first principles', '1596643', 'Push-pull functional reactive programming', 0.531271222534)


('143508', 'Architecture support for single address space operating systems', '195795', 'Sharing and protection in a single-address-space operating system', 0.52901841663)


('195795', 'Sharing and protection in a single-address-space operating system', '143508', 'Architecture support for single address space operating systems', 0.52901841663)


('144639', 'The world-wide web', '864307', 'Measuring the Behavior of a World-Wide Web Server', 0.528748844211)


('179671', 'The World-Wide Web', '864307', 'Measuring the Behavior of a World-Wide Web Server', 0.528748844211)


('864307', 'Measuring the Behavior of a World-Wide Web Server', '179671', 'The World-Wide Web', 0.528748844211)


('864307', 'Measuring the Behavior of a World-Wide Web Server', '144639', 'The world-wide web', 0.528748844211)


('357156', 'Termination Detection of Diffusing Computations in Communicating Sequential Processes', '3921', 'Communicating sequential processes', 0.52854251977)


('357156', 'Termination Detection of Diffusing Computations in Communicating Sequential Processes', '359585', 'Communicating sequential processes', 0.52854251977)


('1061986', 'Access cost for asynchronous Byzantine quorum systems', '258650', 'Byzantine quorum systems', 0.528149297214)


('1061986', 'Access cost for asynchronous Byzantine quorum systems', '1035782', 'Byzantine quorum systems', 0.528149297214)


('675172', 'A Robust Distributed Mutual Exclusion Algorithm', '7352', 'A fast mutual exclusion algorithm', 0.527882751491)


('3590', 'The domain name system', '52338', 'Development of the domain name system', 0.527647953988)


('52338', 'Development of the domain name system', '3590', 'The domain name system', 0.527647953988)


('1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', '320260', 'System level concurrency control for distributed database systems', 0.527405845403)


('320260', 'System level concurrency control for distributed database systems', '1286918', 'Timestamp-based algorithms for concurrency control in distributed database systems', 0.527405845403)


('1592785', 'Declarative networking', '1989321', 'Relational transducers for declarative networking', 0.52679390819)


('1592785', 'Declarative networking', '2450151', 'Relational transducers for declarative networking', 0.52679390819)


('1989321', 'Relational transducers for declarative networking', '1592785', 'Declarative networking', 0.52679390819)


('2450151', 'Relational transducers for declarative networking', '1592785', 'Declarative networking', 0.52679390819)


('290605', 'Database techniques for the World-Wide Web: a survey', '144639', 'The world-wide web', 0.525471236097)


('290605', 'Database techniques for the World-Wide Web: a survey', '179671', 'The World-Wide Web', 0.525471236097)


('1454211', 'H-store: a high-performance, distributed main memory transaction processing system', '62617', 'Multiprocessor main memory transaction processing', 0.525467297929)


('62617', 'Multiprocessor main memory transaction processing', '1454211', 'H-store: a high-performance, distributed main memory transaction processing system', 0.525467297929)


('10608', 'Optimistic concurrency control for abstract data types', '63518', 'Local atomicity properties: modular concurrency control for abstract data types', 0.525455033094)


('63518', 'Local atomicity properties: modular concurrency control for abstract data types', '10608', 'Optimistic concurrency control for abstract data types', 0.525455033094)


('21728', 'Distributed systems and computer networks', '569929', 'Strategies for operating systems in computer networks', 0.525416560468)


('569929', 'Strategies for operating systems in computer networks', '21728', 'Distributed systems and computer networks', 0.525416560468)


('319650', 'Query processing in a system for distributed databases (SDD-1)', '320129', 'Introduction to a system for distributed databases (SDD-1)', 0.525197698247)


('320129', 'Introduction to a system for distributed databases (SDD-1)', '319650', 'Query processing in a system for distributed databases (SDD-1)', 0.525197698247)


('224060', 'Logged virtual memory', '356573', 'Virtual Memory', 0.525131425877)


('356573', 'Virtual Memory', '224060', 'Logged virtual memory', 0.525131425877)


('1382847', 'Randomized byzantine generals', '22180', 'An O(lg n) expected rounds randomized Byzantine generals protocol', 0.524212424543)


('22180', 'An O(lg n) expected rounds randomized Byzantine generals protocol', '1382847', 'Randomized byzantine generals', 0.524212424543)


('4198', 'An introduction to database systems: vol. I (4th ed.)', '539470', 'An  Introduction to Database Systems', 0.523502666896)


('539470', 'An  Introduction to Database Systems', '4198', 'An introduction to database systems: vol. I (4th ed.)', 0.523502666896)


('325092', 'Main memory database recovery', '627538', 'Main Memory Database Systems: An Overview', 0.52348063638)


('627538', 'Main Memory Database Systems: An Overview', '325092', 'Main memory database recovery', 0.52348063638)


('891920', 'A generalization of the divide-sort-merge strategy for sorting networks', '891921', 'A lower bound for sorting networks that use the divide-sort-merge strategy', 0.523425701448)


('891921', 'A lower bound for sorting networks that use the divide-sort-merge strategy', '891920', 'A generalization of the divide-sort-merge strategy for sorting networks', 0.523425701448)


('38740', 'Dynamic voting', '653400', 'Efficient Dynamic Voting Algorithms', 0.523325496068)


('653400', 'Efficient Dynamic Voting Algorithms', '38740', 'Dynamic voting', 0.523325496068)


('277781', 'Probabilistic Byzantine quorum systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.522662233107)


('737912', 'Dynamic Byzantine Quorum Systems', '277781', 'Probabilistic Byzantine quorum systems', 0.522662233107)


('1267681', 'Experience with an object reputation system for peer-to-peer filesharing', '776346', 'A reputation system for peer-to-peer networks', 0.522581357981)


('776346', 'A reputation system for peer-to-peer networks', '1267681', 'Experience with an object reputation system for peer-to-peer filesharing', 0.522581357981)


('1286751', 'Two-phase deadlock detection algorithm in distributed databases', '319717', 'Distributed deadlock detection algorithm', 0.522575068941)


('319717', 'Distributed deadlock detection algorithm', '1286751', 'Two-phase deadlock detection algorithm in distributed databases', 0.522575068941)


('3151', 'Beyond two-phase locking', '59282', 'The Delay Due to Dynamic Two-Phase Locking', 0.52096799494)


('59282', 'The Delay Due to Dynamic Two-Phase Locking', '3151', 'Beyond two-phase locking', 0.52096799494)


('248181', 'Forward acknowledgement: refining TCP congestion control', 'RFC2581', 'TCP Congestion Control', 0.520715030432)


('RFC2581', 'TCP Congestion Control', '248181', 'Forward acknowledgement: refining TCP congestion control', 0.520715030432)


('16878', 'Query processing in main memory database management systems', '671312', 'A Study of Index Structures for Main Memory Database Management Systems', 0.519824048964)


('671312', 'A Study of Index Structures for Main Memory Database Management Systems', '16878', 'Query processing in main memory database management systems', 0.519824048964)


('1398894', 'Zero-knowledge proofs of knowledge without interaction', '56176', 'Zero-knowledge proofs of identity', 0.518881725784)


('1398894', 'Zero-knowledge proofs of knowledge without interaction', '28419', 'Zero knowledge proofs of identity', 0.518881725784)


('28419', 'Zero knowledge proofs of identity', '1398894', 'Zero-knowledge proofs of knowledge without interaction', 0.518881725784)


('56176', 'Zero-knowledge proofs of identity', '1398894', 'Zero-knowledge proofs of knowledge without interaction', 0.518881725784)


('738422', 'Small Byzantine Quorum Systems', '737912', 'Dynamic Byzantine Quorum Systems', 0.518695672822)


('322398', 'The Weak Byzantine Generals Problem', '4622', 'A new solution for the byzantine generals problem', 0.51833116072)


('4622', 'A new solution for the byzantine generals problem', '322398', 'The Weak Byzantine Generals Problem', 0.51833116072)


('3526', 'Operating system concepts (2nd ed.)', '580960', 'Operating System Concepts', 0.517357714584)


('580960', 'Operating System Concepts', '3526', 'Operating system concepts (2nd ed.)', 0.517357714584)


('118249', 'One way hash functions and DES', '141812', 'Message authentication with one-way hash functions', 0.517262361558)


('118249', 'One way hash functions and DES', '131631', 'Message authentication with one-way hash functions', 0.517262361558)


('131631', 'Message authentication with one-way hash functions', '705044', 'One Way Hash Functions and DES', 0.517262361558)


('131631', 'Message authentication with one-way hash functions', '118249', 'One way hash functions and DES', 0.517262361558)


('141812', 'Message authentication with one-way hash functions', '705044', 'One Way Hash Functions and DES', 0.517262361558)


('141812', 'Message authentication with one-way hash functions', '118249', 'One way hash functions and DES', 0.517262361558)


('705044', 'One Way Hash Functions and DES', '141812', 'Message authentication with one-way hash functions', 0.517262361558)


('705044', 'One Way Hash Functions and DES', '131631', 'Message authentication with one-way hash functions', 0.517262361558)


('1035758', 'Synchronous Byzantine quorum systems', '277781', 'Probabilistic Byzantine quorum systems', 0.516680710133)


('259454', 'Synchronous Byzantine quorum systems', '277781', 'Probabilistic Byzantine quorum systems', 0.516680710133)


('277781', 'Probabilistic Byzantine quorum systems', '259454', 'Synchronous Byzantine quorum systems', 0.516680710133)


('277781', 'Probabilistic Byzantine quorum systems', '1035758', 'Synchronous Byzantine quorum systems', 0.516680710133)


('265036', 'Database management systems', '654311', 'A Methodology for Benchmarking Distributed Database Management Systems', 0.516480483148)


('556803', 'Database Management Systems', '654311', 'A Methodology for Benchmarking Distributed Database Management Systems', 0.516480483148)


('654311', 'A Methodology for Benchmarking Distributed Database Management Systems', '265036', 'Database management systems', 0.516480483148)


('654311', 'A Methodology for Benchmarking Distributed Database Management Systems', '556803', 'Database Management Systems', 0.516480483148)


('105362', 'A very simple construction of 1-writer multireader multivalued atomic variable', '63811', 'An elegant 1-writer multireader multivalued atomic register', 0.516420061659)


('63811', 'An elegant 1-writer multireader multivalued atomic register', '105362', 'A very simple construction of 1-writer multireader multivalued atomic variable', 0.516420061659)


('38836', 'The design and implementation of distributed Smalltalk', '851705', 'Design and Implementation of a Distributed X-Multiplexor', 0.516412668502)


('851705', 'Design and Implementation of a Distributed X-Multiplexor', '38836', 'The design and implementation of distributed Smalltalk', 0.516412668502)


('539470', 'An  Introduction to Database Systems', '77706', 'An introduction to database systems: vol. 1 (5th ed.)', 0.516232300057)


('77706', 'An introduction to database systems: vol. 1 (5th ed.)', '539470', 'An  Introduction to Database Systems', 0.516232300057)


('2041', 'Observations on optimistic concurrency control schemes', '317824', 'Analysis of some optimistic concurrency control schemes based on certification', 0.516231752516)


('317824', 'Analysis of some optimistic concurrency control schemes based on certification', '2041', 'Observations on optimistic concurrency control schemes', 0.516231752516)


('455', 'Fault-tolerant broadcasts', '866693', 'A Modular Approach to Fault-Tolerant Broadcasts and Related Problems', 0.516176834348)


('866693', 'A Modular Approach to Fault-Tolerant Broadcasts and Related Problems', '455', 'Fault-tolerant broadcasts', 0.516176834348)


('263712', 'Proof-carrying code', '325727', 'A semantic model of types and machine instructions for proof-carrying code', 0.516051535668)


('325727', 'A semantic model of types and machine instructions for proof-carrying code', '263712', 'Proof-carrying code', 0.516051535668)


('3818', 'A randomized protocol for signing contracts', '683354', 'A Fair Protocol for Signing Contracts (Extended Abstract)', 0.515706693063)


('683354', 'A Fair Protocol for Signing Contracts (Extended Abstract)', '3818', 'A randomized protocol for signing contracts', 0.515706693063)


('628', 'Maintaining order in a generalized linked list', '802184', 'Maintaining order in a linked list', 0.514096250705)


('802184', 'Maintaining order in a linked list', '628', 'Maintaining order in a generalized linked list', 0.514096250705)


('50212', 'Process and dataflow control in distributed data-intensive systems', '55614', 'Comparison of dataflow control techniques in distributed data-intensive systems', 0.514091452201)


('55614', 'Comparison of dataflow control techniques in distributed data-intensive systems', '50212', 'Process and dataflow control in distributed data-intensive systems', 0.514091452201)


('319663', 'Efficient locking for concurrent operations on B-trees', '9665', 'Concurrent operations on B*-trees with overtaking', 0.513687996351)


('319663', 'Efficient locking for concurrent operations on B-trees', '325409', 'Concurrent operations on B-trees with overtaking', 0.513687996351)


('325409', 'Concurrent operations on B-trees with overtaking', '319663', 'Efficient locking for concurrent operations on B-trees', 0.513687996351)


('9665', 'Concurrent operations on B*-trees with overtaking', '319663', 'Efficient locking for concurrent operations on B-trees', 0.513687996351)


('738422', 'Small Byzantine Quorum Systems', '259454', 'Synchronous Byzantine quorum systems', 0.512759544503)


('738422', 'Small Byzantine Quorum Systems', '1035758', 'Synchronous Byzantine quorum systems', 0.512759544503)


('100273', 'Public-key cryptosystems provably secure against chosen ciphertext attacks', '759582', 'Towards Practical Public Key Systems Secure Against Chosen Ciphertext Attacks', 0.512324709636)


('759582', 'Towards Practical Public Key Systems Secure Against Chosen Ciphertext Attacks', '100273', 'Public-key cryptosystems provably secure against chosen ciphertext attacks', 0.512324709636)


('653400', 'Efficient Dynamic Voting Algorithms', '879299', 'Availability Study of Dynamic Voting Algorithms', 0.511542233123)


('879299', 'Availability Study of Dynamic Voting Algorithms', '653400', 'Efficient Dynamic Voting Algorithms', 0.511542233123)


('129616', 'Alpha architecture reference manual', '889164', 'ITS 1.5 Reference Manual', 0.511533072909)


('40660', 'VAX architecture reference manual', '889164', 'ITS 1.5 Reference Manual', 0.511533072909)


('889164', 'ITS 1.5 Reference Manual', '40660', 'VAX architecture reference manual', 0.511533072909)


('889164', 'ITS 1.5 Reference Manual', '129616', 'Alpha architecture reference manual', 0.511533072909)


('308440', 'Hybrid concurrency control for abstract data types', '63518', 'Local atomicity properties: modular concurrency control for abstract data types', 0.511087165595)


('63518', 'Local atomicity properties: modular concurrency control for abstract data types', '308440', 'Hybrid concurrency control for abstract data types', 0.511087165595)


('357392', 'Implementing remote procedure calls', '910306', 'Remote procedure call', 0.510541793756)


('910306', 'Remote procedure call', '357392', 'Implementing remote procedure calls', 0.510541793756)


('223787', 'Efficient optimistic concurrency control using loosely synchronized clocks', '259425', 'Lazy consistency using loosely synchronized clocks', 0.509794703483)


('259425', 'Lazy consistency using loosely synchronized clocks', '223787', 'Efficient optimistic concurrency control using loosely synchronized clocks', 0.509794703483)


('102808', 'Wait-free synchronization', '675816', 'Wait-Free Synchronization in Quantum-Based Multiprogrammed Systems', 0.509416729624)


('675816', 'Wait-Free Synchronization in Quantum-Based Multiprogrammed Systems', '102808', 'Wait-free synchronization', 0.509416729624)


('265036', 'Database management systems', '359021', 'Analysis of locking policies in database management systems', 0.508589122829)


('359021', 'Analysis of locking policies in database management systems', '265036', 'Database management systems', 0.508589122829)


('359021', 'Analysis of locking policies in database management systems', '556803', 'Database Management Systems', 0.508589122829)


('556803', 'Database Management Systems', '359021', 'Analysis of locking policies in database management systems', 0.508589122829)


('577306', 'Distributed Database Management', '654311', 'A Methodology for Benchmarking Distributed Database Management Systems', 0.507950027316)


('654311', 'A Methodology for Benchmarking Distributed Database Management Systems', '577306', 'Distributed Database Management', 0.507950027316)


('103721', 'VirtualClock: a new traffic control algorithm for packet-switched networks', '99525', 'Virtual clock: a new traffic control algorithm for packet switching networks', 0.507467658666)


('99525', 'Virtual clock: a new traffic control algorithm for packet switching networks', '103721', 'VirtualClock: a new traffic control algorithm for packet-switched networks', 0.507467658666)


('1755044', 'A new identification scheme based on the perceptrons problem', '188111', 'A new identification scheme based on syndrome decoding', 0.507030210453)


('188111', 'A new identification scheme based on syndrome decoding', '1755044', 'A new identification scheme based on the perceptrons problem', 0.507030210453)


('833', 'A Theory of Communicating Sequential Processes', '867516', 'Proof Rules for Communicating Sequential Processes', 0.506910896609)


('867516', 'Proof Rules for Communicating Sequential Processes', '833', 'A Theory of Communicating Sequential Processes', 0.506910896609)


('163303', 'The process group approach to reliable distributed computing', '889868', 'NESTED TRANSACTIONS: AN APPROACH TO RELIABLE DISTRIBUTED COMPUTING', 0.506448040414)


('163303', 'The process group approach to reliable distributed computing', '3529', 'Nested transactions:  an approach to reliable distributed computing', 0.506448040414)


('3529', 'Nested transactions:  an approach to reliable distributed computing', '163303', 'The process group approach to reliable distributed computing', 0.506448040414)


('889868', 'NESTED TRANSACTIONS: AN APPROACH TO RELIABLE DISTRIBUTED COMPUTING', '163303', 'The process group approach to reliable distributed computing', 0.506448040414)


('335068', 'The network weather service: a distributed resource performance forecasting service for metacomputing', '762812', 'Multivariate resource performance forecasting in the network weather service', 0.505374372262)


('762812', 'Multivariate resource performance forecasting in the network weather service', '335068', 'The network weather service: a distributed resource performance forecasting service for metacomputing', 0.505374372262)


('204152', 'Divergence control for distributed database systems', '320260', 'System level concurrency control for distributed database systems', 0.505327291046)


('320260', 'System level concurrency control for distributed database systems', '204152', 'Divergence control for distributed database systems', 0.505327291046)


('530225', 'Symbolic Model Checking', '876643', 'Counterexample-guided abstraction refinement for symbolic model checking', 0.50503211819)


('876643', 'Counterexample-guided abstraction refinement for symbolic model checking', '530225', 'Symbolic Model Checking', 0.50503211819)


('224068', 'Exploiting weak connectivity for mobile file access', '925924', 'Exploiting weak connectivity in a distributed file system', 0.504343331138)


('925924', 'Exploiting weak connectivity in a distributed file system', '224068', 'Exploiting weak connectivity for mobile file access', 0.504343331138)


('323606', 'Site optimal termination protocols for a distributed database under network partitioning', '588064', 'Optimal termination protocols for network partitioning', 0.504290211144)


('588064', 'Optimal termination protocols for network partitioning', '323606', 'Site optimal termination protocols for a distributed database under network partitioning', 0.504290211144)


('310247', 'Using the heartbeat failure detector for quiescent reliable communication and consensus in partitionable networks', '675781', 'Heartbeat: A Timeout-Free Failure Detector for Quiescent Reliable Communication', 0.504017635175)


('675781', 'Heartbeat: A Timeout-Free Failure Detector for Quiescent Reliable Communication', '310247', 'Using the heartbeat failure detector for quiescent reliable communication and consensus in partitionable networks', 0.504017635175)


('6423', 'File access performance of diskless workstations', '806621', 'The distributed V kernel and its performance for diskless workstations', 0.503882683688)


('806621', 'The distributed V kernel and its performance for diskless workstations', '6423', 'File access performance of diskless workstations', 0.503882683688)


('301964', 'Minimizing the Maximum Delay for Reaching Consensus in Quorum-Based Mutual Exclusion Schemes', '544999', 'Minimizing the mean delay of quorum-based mutual exclusion schemes', 0.501555957964)


('544999', 'Minimizing the mean delay of quorum-based mutual exclusion schemes', '301964', 'Minimizing the Maximum Delay for Reaching Consensus in Quorum-Based Mutual Exclusion Schemes', 0.501555957964)


('580960', 'Operating System Concepts', '95329', 'Operating system concepts (3rd ed.)', 0.501154710047)


('95329', 'Operating system concepts (3rd ed.)', '580960', 'Operating System Concepts', 0.501154710047)


('810659', 'A large scale, homogeneous, fully distributed parallel machine, I', '810660', 'A Large Scale, Homogenous, Fully Distributed Parallel Machine, II', 0.50043545389)


('810660', 'A Large Scale, Homogenous, Fully Distributed Parallel Machine, II', '810659', 'A large scale, homogeneous, fully distributed parallel machine, I', 0.50043545389)


Getting started with a quick-and-easy k-nearest neighbor classifier

THis is a tinny example to show the idea of KNN for recommender development.


In [112]:
import numpy as np
from sklearn.neighbors import NearestNeighbors

# First let's create a dataset called X, with 6 records and 2 features each.
X = np.array([[-1, 2], [4, -4], [-2, 1], [-1, 3], [-3, 2], [-1, 4]])

# Next we will instantiate a nearest neighbor object, and call it nbrs. Then we will fit it to dataset X.
nbrs = NearestNeighbors(n_neighbors=3, algorithm='ball_tree').fit(X)

# Let's find the k-neighbors of each point in object X. To do that we call the kneighbors() function on object X.
distances, indices = nbrs.kneighbors(X)

# Let's print out the indices of neighbors for each record in object X.
indices


Out[112]:
array([[0, 3, 2],
       [1, 2, 0],
       [2, 4, 0],
       [3, 5, 0],
       [4, 2, 0],
       [5, 3, 0]])

In [113]:
distances


Out[113]:
array([[ 0.        ,  1.        ,  1.41421356],
       [ 0.        ,  7.81024968,  7.81024968],
       [ 0.        ,  1.41421356,  1.41421356],
       [ 0.        ,  1.        ,  1.        ],
       [ 0.        ,  1.41421356,  2.        ],
       [ 0.        ,  1.        ,  2.        ]])

Imagine you have a new incoming data point. It contains the values -2 and 4. To search object X and identify the most similar record, all you need to do is call the kneighbors() function on the new incoming data p


In [114]:
print(nbrs.kneighbors([[-2, 4]]))


(array([[ 1.        ,  1.41421356,  2.23606798]]), array([[5, 3, 0]]))

The results indicate that the record that has neighbors with the indices [5, 3, 0] is the most similar to the new incoming data point. If you look back at the records in X, that is the last record: [-1, 4]. Just based on a quick glance you can see that, indeed, the last record in object X is the one that is most similar to this new incoming data point [-2, 4].


In [ ]: